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_accept_stream, SSL_get_accept_stream_queue_len, SSL_ACCEPT_STREAM_NO_BLOCK - accept an incoming QUIC

Description

       The SSL_accept_stream() function attempts to dequeue an incoming stream from the given QUIC connection
       SSL object and returns the newly allocated QUIC stream SSL object.

       If the queue of incoming streams is empty, this function returns NULL (in nonblocking mode) or waits for
       an incoming stream (in blocking mode). This function may still return NULL in blocking mode, for example
       if the underlying connection is terminated.

       The caller is responsible for managing the lifetime of the returned QUIC stream SSL object; for more
       information, see SSL_free(3).

       This function will block if the QUIC connection SSL object is configured in blocking mode (see
       SSL_set_blocking_mode(3)), but this may be bypassed by passing the flag SSL_ACCEPT_STREAM_NO_BLOCK in
       flags. If this flag is set, this function never blocks.

       Calling SSL_accept_stream() if there is no default stream already present inhibits the future creation of
       a default stream. See openssl-quic(7).

       SSL_get_accept_stream_queue_len() returns the number of incoming streams currently waiting in the accept
       queue.

       These functions can be used from multiple threads for the same QUIC connection.

       Depending on whether default stream functionality is being used, it may be necessary to explicitly
       configure the incoming stream policy before streams can be accepted; see
       SSL_set_incoming_stream_policy(3). See also "MODES OF OPERATION" in openssl-quic(7) for more information
       on default stream functionality.

History

SSL_accept_stream() and SSL_get_accept_stream_queue_len() were added in OpenSSL 3.2.

Name

       SSL_accept_stream, SSL_get_accept_stream_queue_len, SSL_ACCEPT_STREAM_NO_BLOCK - accept an incoming QUIC
       stream from a QUIC peer

Return Values

SSL_accept_stream() returns a newly allocated QUIC stream SSL object, or NULL if no new incoming streams
       are available, or if the connection has been terminated, or if called on an SSL object other than a QUIC
       connection SSL object.  SSL_get_error(3) can be used to obtain further information in this case.

       SSL_get_accept_stream_queue_len() returns the number of incoming streams currently waiting in the accept
       queue, or 0 if called on an SSL object other than a QUIC connection SSL object.

See Also

       "MODES OF OPERATION" in openssl-quic(7), SSL_new_stream(3), SSL_set_blocking_mode(3), SSL_free(3)

Synopsis

        #include <openssl/ssl.h>

        #define SSL_ACCEPT_STREAM_NO_BLOCK

        SSL *SSL_accept_stream(SSL *ssl, uint64_t flags);

        size_t SSL_get_accept_stream_queue_len(SSL *ssl);

See Also