logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

SSL_get_stream_id, SSL_get_stream_type, SSL_STREAM_TYPE_NONE, SSL_STREAM_TYPE_READ,

Description

       The SSL_get_stream_id() function returns the QUIC stream ID for a QUIC stream SSL object, or for a QUIC
       connection SSL object which has a default stream attached.

       The SSL_get_stream_type() function identifies what operations can be performed on the stream, and returns
       one of the following values:

       SSL_STREAM_TYPE_NONE
           The SSL object is a QUIC connection SSL object without a default stream attached.

       SSL_STREAM_TYPE_BIDI
           The  SSL  object  is a non-QUIC SSL object, or is a QUIC stream object (or QUIC connection SSL object
           with a default stream attached), and that stream is a bidirectional QUIC stream.

       SSL_STREAM_TYPE_READ
           The SSL object is a QUIC stream  object  (or  QUIC  connection  SSL  object  with  a  default  stream
           attached),  and  that  stream is a unidirectional QUIC stream which was initiated by the remote peer;
           thus, it can be read from, but not written to.

       SSL_STREAM_TYPE_WRITE
           The SSL object is a QUIC stream  object  (or  QUIC  connection  SSL  object  with  a  default  stream
           attached),  and  that  stream  is  a  unidirectional  QUIC  stream  which  was initiated by the local
           application; thus, it can be written to, but not read from.

       The SSL_is_stream_local() function determines whether a stream was locally created.

History

       These functions were added in OpenSSL 3.2.

Name

       SSL_get_stream_id, SSL_get_stream_type, SSL_STREAM_TYPE_NONE, SSL_STREAM_TYPE_READ,
       SSL_STREAM_TYPE_WRITE, SSL_STREAM_TYPE_BIDI, SSL_is_stream_local - get QUIC stream ID and stream type
       information

Notes

       While QUICv1 assigns specific meaning to the low two bits of a QUIC stream ID, QUIC stream IDs in  future
       versions  of  QUIC  are not required to have the same semantics. Do not determine stream properties using
       these bits. Instead, use SSL_get_stream_type() to determine the stream type and SSL_get_stream_is_local()
       to determine the stream initiator.

       The SSL_get_stream_type() identifies the type of a QUIC stream  based  on  its  identity,  and  does  not
       indicate whether an operation can currently be successfully performed on a stream. For example, you might
       locally   initiate   a   unidirectional  stream,  write  to  it,  and  then  conclude  the  stream  using
       SSL_stream_conclude(3), meaning that it can no longer be  written  to,  but  SSL_get_stream_type()  would
       still  return  SSL_STREAM_TYPE_WRITE.  The value returned by SSL_get_stream_type() does not vary over the
       lifespan of a stream.

Return Values

SSL_get_stream_id() returns a QUIC stream ID, or UINT64_MAX if called on an SSL object  which  is  not  a
       QUIC  SSL  object,  or  if called on a QUIC connection SSL object without a default stream attached. Note
       that valid QUIC stream IDs are always below 2**62.

       SSL_get_stream_type() returns one of the SSL_STREAM_TYPE values.

       SSL_is_stream_local() returns 1 if called on a QUIC stream SSL object which represents a stream which was
       locally initiated. It returns 0 if called on a QUIC stream SSL object which represents a stream which was
       remotely initiated by a peer, and -1 if called on any other kind of SSL object.

See Also

SSL_new_stream(3), SSL_accept_stream(3)

Synopsis

        #include <openssl/ssl.h>

        uint64_t SSL_get_stream_id(SSL *ssl);

        #define SSL_STREAM_TYPE_NONE
        #define SSL_STREAM_TYPE_BIDI
        #define SSL_STREAM_TYPE_READ
        #define SSL_STREAM_TYPE_WRITE
        int SSL_get_stream_type(SSL *ssl);

        int SSL_is_stream_local(SSL *ssl);

See Also