SSL_ACCEPT_STREAM(3ossl)

πŸ“¦
version 15.1 Β· 2 versions
, in freebsd 15.1

πŸ’… SSL_ACCEPT_STREAM(3ossl) β€” the ossl girlies know

okay so bestie, this is the 3ossl manual page (yes, that's the OpenSSL section 3 vibe) for SSL_accept_stream, SSL_get_accept_stream_queue_len, and SSL_ACCEPT_STREAM_NO_BLOCK β€” literally the whole "accept an incoming QUIC stream from a QUIC peer" situation. πŸ¦‹


✨ NAME ✨

SSL_accept_stream, SSL_get_accept_stream_queue_len, SSL_ACCEPT_STREAM_NO_BLOCK β€” accept an incoming QUIC stream from a QUIC peer. That's the gig. That's the whole personality. πŸ‘‘


πŸŽ€ 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);

like, that's the whole front door. copy it exactly, bestie, don't freestyle it. πŸ’–


🌸 DESCRIPTION 🌸

SSL_accept_stream() is the main character here β€” it attempts to dequeue an incoming stream from the given QUIC connection SSL object and hands you back the newly allocated QUIC stream SSL object. it's giving "here's your new baby stream, go raise it." 🍼✨

if the queue of incoming streams is empty, this function returns NULL (in nonblocking mode) or waits for an incoming stream (in blocking mode). and ngl, this function may still return NULL in blocking mode too β€” for example if the underlying connection is terminated. so like, blocking isn't a guarantee, it's a vibe. 😭

the caller is responsible for managing the lifetime of the returned QUIC stream SSL object β€” no cap, that's on you, bestie. for more info, see SSL_free(3). 🫢

this function will block if the QUIC connection SSL object is configured in blocking mode (see SSL_set_blocking_mode(3)), but you can bypass that whole situation by passing the flag SSL_ACCEPT_STREAM_NO_BLOCK in flags. if this flag is set, this function never blocks. periodt. πŸ’…

calling SSL_accept_stream() if there is no default stream already present inhibits the future creation of a default stream. yes, that's a real side effect, see openssl-quic(7). it's giving "you touched it, you own the consequences." πŸ™ˆ

SSL_get_accept_stream_queue_len() returns the number of incoming streams currently waiting in the accept queue. like a little peek into the queue's group chat β€” how many stream besties are waiting to be let in. πŸ‘€

these functions can be used from multiple threads for the same QUIC connection. slay, thread-safe behavior. πŸ”₯

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 SSL_set_incoming_stream_policy(3). also check "MODES OF OPERATION" in openssl-quic(7) for more information on default stream functionality. do your homework, iykyk. πŸ“š


⭐ 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 an SSL object other than a QUIC connection SSL object. SSL_get_error(3) can be used to obtain further information in this case. so like, don't just stare at the NULL, go read the error. 😀
  • SSL_get_accept_stream_queue_len() β€” returns the number of incoming streams currently waiting in the accept queue, or 0 if called on an SSL object other than a QUIC connection SSL object. zero, nada, nothing, the queue is empty or you're in the wrong place. πŸ’€

πŸ¦‹ SEE ALSO πŸ¦‹

the whole friend group, linked for your convenience. 🫢✨


🧚 HISTORY 🧚

SSL_accept_stream() and SSL_get_accept_stream_queue_len() were added in OpenSSL 3.2. so if you're on something older, that's why it's not working, bestie β€” it literally did not exist yet. 😭


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 <https://www.openssl.org/source/license.html>.

fr fr read the license. it's the rules, and the rules are iconic. πŸ’œ

and that's the page!! this was OpenSSL 3.5.6, dated 2026-04-07, filed under SSL_ACCEPT_STREAM(3ossl) β€” mwah, go accept some streams, bestie. πŸ’…πŸŽ€πŸŒˆ

πŸ“¦ where this page comes from