123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- =pod
- =head1 NAME
- SSL_accept_stream, SSL_get_accept_stream_queue_len, SSL_ACCEPT_STREAM_NO_BLOCK -
- accept an incoming QUIC stream from a QUIC peer
- =head1 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);
- =head1 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 L<SSL_free(3)>.
- This function will block if the QUIC connection SSL object is configured in
- blocking mode (see L<SSL_set_blocking_mode(3)>), but this may be bypassed by
- passing the flag B<SSL_ACCEPT_STREAM_NO_BLOCK> in I<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 L<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 L<SSL_set_incoming_stream_policy(3)>. See also
- L<openssl-quic(7)/MODES OF OPERATION> for more information on default stream
- functionality.
- =head1 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 a SSL object other than a QUIC connection SSL object.
- L<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 a SSL object other than
- a QUIC connection SSL object.
- =head1 SEE ALSO
- L<openssl-quic(7)/MODES OF OPERATION>, L<SSL_new_stream(3)>,
- L<SSL_set_blocking_mode(3)>, L<SSL_free(3)>
- =head1 HISTORY
- SSL_accept_stream() and SSL_get_accept_stream_queue_len() were added in OpenSSL
- 3.2.
- =head1 COPYRIGHT
- Copyright 2002-2023 The OpenSSL Project Authors. All Rights Reserved.
- Licensed under the Apache License 2.0 (the "License"). You may not use
- this file except in compliance with the License. You can obtain a copy
- in the file LICENSE in the source distribution or at
- L<https://www.openssl.org/source/license.html>.
- =cut
|