GENERATE[html/man3/SSL_alloc_buffers.html]=man3/SSL_alloc_buffers.pod
DEPEND[man/man3/SSL_alloc_buffers.3]=man3/SSL_alloc_buffers.pod
GENERATE[man/man3/SSL_alloc_buffers.3]=man3/SSL_alloc_buffers.pod
-DEPEND[html/man3/SSL_attach_stream.html]=man3/SSL_attach_stream.pod
-GENERATE[html/man3/SSL_attach_stream.html]=man3/SSL_attach_stream.pod
-DEPEND[man/man3/SSL_attach_stream.3]=man3/SSL_attach_stream.pod
-GENERATE[man/man3/SSL_attach_stream.3]=man3/SSL_attach_stream.pod
DEPEND[html/man3/SSL_check_chain.html]=man3/SSL_check_chain.pod
GENERATE[html/man3/SSL_check_chain.html]=man3/SSL_check_chain.pod
DEPEND[man/man3/SSL_check_chain.3]=man3/SSL_check_chain.pod
GENERATE[html/man3/SSL_set_connect_state.html]=man3/SSL_set_connect_state.pod
DEPEND[man/man3/SSL_set_connect_state.3]=man3/SSL_set_connect_state.pod
GENERATE[man/man3/SSL_set_connect_state.3]=man3/SSL_set_connect_state.pod
+DEPEND[html/man3/SSL_set_default_stream_mode.html]=man3/SSL_set_default_stream_mode.pod
+GENERATE[html/man3/SSL_set_default_stream_mode.html]=man3/SSL_set_default_stream_mode.pod
+DEPEND[man/man3/SSL_set_default_stream_mode.3]=man3/SSL_set_default_stream_mode.pod
+GENERATE[man/man3/SSL_set_default_stream_mode.3]=man3/SSL_set_default_stream_mode.pod
DEPEND[html/man3/SSL_set_fd.html]=man3/SSL_set_fd.pod
GENERATE[html/man3/SSL_set_fd.html]=man3/SSL_set_fd.pod
DEPEND[man/man3/SSL_set_fd.3]=man3/SSL_set_fd.pod
html/man3/SSL_accept_stream.html \
html/man3/SSL_alert_type_string.html \
html/man3/SSL_alloc_buffers.html \
-html/man3/SSL_attach_stream.html \
html/man3/SSL_check_chain.html \
html/man3/SSL_clear.html \
html/man3/SSL_connect.html \
html/man3/SSL_set_bio.html \
html/man3/SSL_set_blocking_mode.html \
html/man3/SSL_set_connect_state.html \
+html/man3/SSL_set_default_stream_mode.html \
html/man3/SSL_set_fd.html \
html/man3/SSL_set_incoming_stream_policy.html \
html/man3/SSL_set_initial_peer_addr.html \
man/man3/SSL_accept_stream.3 \
man/man3/SSL_alert_type_string.3 \
man/man3/SSL_alloc_buffers.3 \
-man/man3/SSL_attach_stream.3 \
man/man3/SSL_check_chain.3 \
man/man3/SSL_clear.3 \
man/man3/SSL_connect.3 \
man/man3/SSL_set_bio.3 \
man/man3/SSL_set_blocking_mode.3 \
man/man3/SSL_set_connect_state.3 \
+man/man3/SSL_set_default_stream_mode.3 \
man/man3/SSL_set_fd.3 \
man/man3/SSL_set_incoming_stream_policy.3 \
man/man3/SSL_set_initial_peer_addr.3 \
=item B<SSL_STREAM_TYPE_NONE>
-The SSL object is a QUIC connection SSL object without a default stream attached
-(see L<SSL_attach_stream(3)>).
+The SSL object is a QUIC connection SSL object without a default stream
+attached.
=item B<SSL_STREAM_TYPE_BIDI>
=head1 SEE ALSO
-L<SSL_attach_stream(3)>, L<SSL_new_stream(3)>, L<SSL_accept_stream(3)>
+L<SSL_new_stream(3)>, L<SSL_accept_stream(3)>
=head1 HISTORY
=head1 NAME
-SSL_attach_stream, SSL_detach_stream, SSL_set_default_stream_mode,
+SSL_set_default_stream_mode,
SSL_DEFAULT_STREAM_MODE_NONE, SSL_DEFAULT_STREAM_MODE_AUTO_BIDI,
SSL_DEFAULT_STREAM_MODE_AUTO_UNI - manage the default stream for a QUIC
connection
#include <openssl/ssl.h>
- int SSL_attach_stream(SSL *conn, SSL *stream);
- SSL *SSL_detach_stream(SSL *conn);
-
#define SSL_DEFAULT_STREAM_MODE_NONE
#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI
#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI
functionality, SSL_set_default_stream_mode() (discussed below) can be used to
accomplish this.
-If a default stream is currently bound to a QUIC connection SSL object, it can
-be detached from that QUIC connection SSL object and used explicitly by calling
-SSL_detach_stream(), which detaches the default stream and returns it as an
-explicit QUIC stream SSL object.
-
-Once detached, the caller is responsible for managing the lifetime of the QUIC
-stream SSL object and must free it by calling L<SSL_free(3)>. A QUIC stream SSL
-object maintains a reference to a QUIC connection SSL object, therefore a QUIC
-connection SSL object and its child stream objects may be freed in either order;
-for details, see L<SSL_free(3)>.
-
When a QUIC connection SSL object has no default stream currently associated
-with it, for example because the default stream was detached or because default
-stream functionality was disabled, calls to functions which require a stream on
-the QUIC connection SSL object (for example, L<SSL_read(3)> and L<SSL_write(3)>)
-will fail.
-
-The act of detaching a stream from a QUIC connection SSL object can be reversed
-by calling SSL_attach_stream(). This can also be used to designate a stream
-obtained via L<SSL_new_stream(3)> or L<SSL_accept_stream(3)> as the default
-stream. SSL_attach_stream() cannot be used if there is already a default stream
-associated with the QUIC connection SSL object; therefore, you may need to call
-SSL_detach_stream() first.
-
-If a stream is successfully attached to a QUIC connection SSL object using
-SSL_attach_stream(), the QUIC connection SSL object becomes responsible for
-managing its lifetime. Calling SSL_free() on the QUIC connection SSL object will
-free the stream automatically. Moreover, once the call to SSL_attach_stream()
-succeeds, the application must make no further use of the QUIC stream SSL object
-pointer that it passed to SSL_attach_stream(). An application must not call
-SSL_attach_stream() with a QUIC stream SSL object that has more than one
-reference to it.
+with it, for example because default stream functionality was disabled, calls to
+functions which require a stream on the QUIC connection SSL object (for example,
+L<SSL_read(3)> and L<SSL_write(3)>) will fail.
It is recommended that new applications and applications which rely on multiple
streams forego use of the default stream functionality, which is intended for
SSL object directly. You must obtain streams using L<SSL_new_stream(3)> or
L<SSL_accept_stream(3)> in order to communicate with the peer.
-It is still possible to explicitly attach a stream as the default stream using
-SSL_attach_stream().
-
=back
A default stream will not be automatically created on a QUIC connection SSL
-object if the default stream mode is set to B<SSL_DEFAULT_STREAM_MODE_NONE>, or
-if the QUIC connection SSL object previously had a default stream which was
-detached using SSL_detach_stream().
+object if the default stream mode is set to B<SSL_DEFAULT_STREAM_MODE_NONE>.
L<SSL_set_incoming_stream_policy(3)> interacts significantly with the default
stream functionality.
=head1 RETURN VALUES
-SSL_detach_stream() returns a QUIC stream SSL object, or NULL if there is no
-default stream currently attached.
-
-SSL_attach_stream() returns 1 on success and 0 on failure.
-
-SSL_attach_stream() fails if a default stream is already attached to the QUIC
-connection SSL object.
-
SSL_set_default_stream_mode() returns 1 on success and 0 on failure.
SSL_set_default_stream_mode() fails if it is called after a default stream has
=item *
-An incoming stream is accepted if L<SSL_detach_stream(3)> has ever been called
-on a QUIC connection SSL object, as the application is assumed to be
-stream-aware in this case.
-
-=item *
-
-Otherwise, if the default stream mode (configured using
-L<SSL_set_default_stream_mode(3)>) is set to
-B<SSL_DEFAULT_STREAM_MODE_AUTO_BIDI> (the default) or
+If the default stream mode (configured using L<SSL_set_default_stream_mode(3)>)
+is set to B<SSL_DEFAULT_STREAM_MODE_AUTO_BIDI> (the default) or
B<SSL_DEFAULT_STREAM_MODE_AUTO_UNI>, the incoming stream is rejected.
=item *
=head1 SEE ALSO
-L<SSL_attach_stream(3)>, L<SSL_detach_stream(3)>,
L<SSL_set_default_stream_mode(3)>, L<SSL_accept_stream(3)>
=head1 HISTORY
#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2
__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode);
-__owur SSL *SSL_detach_stream(SSL *s);
-__owur int SSL_attach_stream(SSL *conn, SSL *stream);
-
#define SSL_STREAM_FLAG_UNI (1U << 0)
__owur SSL *SSL_new_stream(SSL *s, uint64_t flags);
#endif
}
-SSL *SSL_detach_stream(SSL *s)
-{
-#ifndef OPENSSL_NO_QUIC
- if (!IS_QUIC(s))
- return NULL;
-
- return ossl_quic_detach_stream(s);
-#else
- return NULL;
-#endif
-}
-
-int SSL_attach_stream(SSL *conn, SSL *stream)
-{
-#ifndef OPENSSL_NO_QUIC
- if (!IS_QUIC(conn))
- return 0;
-
- return ossl_quic_attach_stream(conn, stream);
-#else
- return 0;
-#endif
-}
-
int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec)
{
#ifndef OPENSSL_NO_QUIC
#include <openssl/bio.h>
#include <openssl/lhash.h>
#include "internal/quic_tserver.h"
+#include "internal/quic_ssl.h"
#include "testutil.h"
static const char *certfile, *keyfile;
if (!TEST_ptr_null(c_tgt))
goto out; /* don't overwrite existing stream with same name */
- if (!TEST_ptr(c_stream = SSL_detach_stream(h.c_conn)))
+ if (!TEST_ptr(c_stream = ossl_quic_detach_stream(h.c_conn)))
goto out;
if (!TEST_true(helper_set_c_stream(&h, op->stream_name, c_stream)))
if (!TEST_ptr(c_tgt))
goto out;
- if (!TEST_true(SSL_attach_stream(h.c_conn, c_tgt)))
+ if (!TEST_true(ossl_quic_attach_stream(h.c_conn, c_tgt)))
goto out;
if (!TEST_true(helper_set_c_stream(&h, op->stream_name, NULL)))
SSL_get_stream_type ? 3_2_0 EXIST::FUNCTION:
SSL_get_stream_id ? 3_2_0 EXIST::FUNCTION:
SSL_set_default_stream_mode ? 3_2_0 EXIST::FUNCTION:
-SSL_detach_stream ? 3_2_0 EXIST::FUNCTION:
-SSL_attach_stream ? 3_2_0 EXIST::FUNCTION:
SSL_accept_stream ? 3_2_0 EXIST::FUNCTION:
SSL_get_accept_stream_queue_len ? 3_2_0 EXIST::FUNCTION:
SSL_stream_reset ? 3_2_0 EXIST::FUNCTION: