mirror of
https://github.com/openssl/openssl.git
synced 2024-12-27 06:21:43 +08:00
a855ee8576
Explain what happens if you call those functions and there is no default stream present yet. Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Hugo Landau <hlandau@openssl.org> (Merged from https://github.com/openssl/openssl/pull/21765)
82 lines
2.8 KiB
Plaintext
82 lines
2.8 KiB
Plaintext
=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
|