xref: /openssl/doc/man3/SSL_accept_stream.pod (revision ef39dd05)
1=pod
2
3=head1 NAME
4
5SSL_accept_stream, SSL_get_accept_stream_queue_len, SSL_ACCEPT_STREAM_NO_BLOCK -
6accept an incoming QUIC stream from a QUIC peer
7
8=head1 SYNOPSIS
9
10 #include <openssl/ssl.h>
11
12 #define SSL_ACCEPT_STREAM_NO_BLOCK
13
14 SSL *SSL_accept_stream(SSL *ssl, uint64_t flags);
15
16 size_t SSL_get_accept_stream_queue_len(SSL *ssl);
17
18=head1 DESCRIPTION
19
20The SSL_accept_stream() function attempts to dequeue an incoming stream from the
21given QUIC connection SSL object and returns the newly allocated QUIC stream SSL
22object.
23
24If the queue of incoming streams is empty, this function returns NULL (in
25nonblocking mode) or waits for an incoming stream (in blocking mode). This
26function may still return NULL in blocking mode, for example if the underlying
27connection is terminated.
28
29The caller is responsible for managing the lifetime of the returned QUIC stream
30SSL object; for more information, see L<SSL_free(3)>.
31
32This function will block if the QUIC connection SSL object is configured in
33blocking mode (see L<SSL_set_blocking_mode(3)>), but this may be bypassed by
34passing the flag B<SSL_ACCEPT_STREAM_NO_BLOCK> in I<flags>. If this flag is set,
35this function never blocks.
36
37Calling SSL_accept_stream() if there is no default stream already present
38inhibits the future creation of a default stream. See L<openssl-quic(7)>.
39
40SSL_get_accept_stream_queue_len() returns the number of incoming streams
41currently waiting in the accept queue.
42
43These functions can be used from multiple threads for the same QUIC connection.
44
45Depending on whether default stream functionality is being used, it may be
46necessary to explicitly configure the incoming stream policy before streams can
47be accepted; see L<SSL_set_incoming_stream_policy(3)>. See also
48L<openssl-quic(7)/MODES OF OPERATION> for more information on default stream
49functionality.
50
51=head1 RETURN VALUES
52
53SSL_accept_stream() returns a newly allocated QUIC stream SSL object, or NULL if
54no new incoming streams are available, or if the connection has been terminated,
55or if called on an SSL object other than a QUIC connection SSL object.
56L<SSL_get_error(3)> can be used to obtain further information in this case.
57
58SSL_get_accept_stream_queue_len() returns the number of incoming streams
59currently waiting in the accept queue, or 0 if called on an SSL object other than
60a QUIC connection SSL object.
61
62=head1 SEE ALSO
63
64L<openssl-quic(7)/MODES OF OPERATION>, L<SSL_new_stream(3)>,
65L<SSL_set_blocking_mode(3)>, L<SSL_free(3)>
66
67=head1 HISTORY
68
69SSL_accept_stream() and SSL_get_accept_stream_queue_len() were added in OpenSSL
703.2.
71
72=head1 COPYRIGHT
73
74Copyright 2002-2023 The OpenSSL Project Authors. All Rights Reserved.
75
76Licensed under the Apache License 2.0 (the "License").  You may not use
77this file except in compliance with the License.  You can obtain a copy
78in the file LICENSE in the source distribution or at
79L<https://www.openssl.org/source/license.html>.
80
81=cut
82