SSL_accept_stream.pod 2.8 KB

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