2023-04-19 02:30:56 +08:00
|
|
|
=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
|
2023-05-02 15:29:29 +08:00
|
|
|
SSL object; for more information, see L<SSL_free(3)>.
|
2023-04-19 02:30:56 +08:00
|
|
|
|
|
|
|
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
|
2023-05-09 02:42:40 +08:00
|
|
|
passing the flag B<SSL_ACCEPT_STREAM_NO_BLOCK> in I<flags>. If this flag is set,
|
2023-04-19 02:30:56 +08:00
|
|
|
this function never blocks.
|
|
|
|
|
2023-04-26 22:55:33 +08:00
|
|
|
SSL_get_accept_stream_queue_len() returns the number of incoming streams
|
|
|
|
currently waiting in the accept queue.
|
|
|
|
|
|
|
|
=begin comment
|
|
|
|
|
|
|
|
TODO(QUIC): Revise in MSMT PR to mention threading considerations.
|
|
|
|
|
|
|
|
=end comment
|
2023-04-19 02:30:56 +08:00
|
|
|
|
|
|
|
Depending on whether default stream functionality is being used, it may be
|
2023-05-09 02:52:45 +08:00
|
|
|
necessary to explicitly configure the incoming stream policy before streams can
|
|
|
|
be accepted; see L<SSL_set_incoming_stream_policy(3)>.
|
2023-04-19 02:30:56 +08:00
|
|
|
|
2023-04-26 22:55:33 +08:00
|
|
|
=begin comment
|
|
|
|
|
|
|
|
TODO(QUIC): Update the above to refer to default stream man(7) page once
|
|
|
|
man(7) pages are merged
|
|
|
|
|
|
|
|
=end comment
|
|
|
|
|
2023-04-19 02:30:56 +08:00
|
|
|
=head1 RETURN VALUES
|
|
|
|
|
|
|
|
SSL_accept_stream() returns a newly allocated QUIC stream SSL object, or NULL if
|
2023-04-26 22:55:33 +08:00
|
|
|
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.
|
2023-05-09 02:42:40 +08:00
|
|
|
L<SSL_get_error(3)> can be used to obtain further information in this case.
|
2023-04-19 02:30:56 +08:00
|
|
|
|
|
|
|
SSL_get_accept_stream_queue_len() returns the number of incoming streams
|
2023-04-26 22:55:33 +08:00
|
|
|
currently waiting in the accept queue, or 0 if called on a SSL object other than
|
|
|
|
a QUIC connection SSL object.
|
2023-04-19 02:30:56 +08:00
|
|
|
|
|
|
|
=head1 SEE ALSO
|
|
|
|
|
|
|
|
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
|