Lines Matching +full:stream +full:- +full:mode +full:- +full:support

5 openssl-quic - OpenSSL QUIC
9 OpenSSL 3.2 and later features support for the QUIC transport protocol.
17 support in. QUIC clients can use L<OSSL_QUIC_client_method(3)> or
28 Default stream mode versus multi-stream mode for clients;
32 The changes to existing libssl APIs which are driven by QUIC-related
46 New, QUIC-specific APIs.
53 stream mode, which is intended to provide compatibility with existing non-QUIC
54 application usage patterns. In this mode, the connection has a single stream
56 connection SSL object read and write from that stream. Whether the stream is
57 client-initiated or server-initiated from a QUIC perspective depends on whether
60 Default stream mode is primarily for compatibility with existing applications.
61 For new applications utilizing QUIC, it's recommended to disable this mode and
62 instead adopt the multi-stream API. See the RECOMMENDATIONS FOR NEW APPLICATIONS
65 =head2 Default Stream Mode
67 A QUIC client connection can be used in either default stream mode or
68 multi-stream mode. By default, a newly created QUIC connection SSL object uses
69 default stream mode.
71 In default stream mode, a stream is implicitly created and bound to the QUIC
73 connection SSL object work by default and are mapped to that stream.
75 When default stream mode is used, any API function which can be called on a QUIC
76 stream SSL object can also be called on a QUIC connection SSL object, in which
77 case it affects the default stream bound to the connection.
79 The identity of a QUIC stream, including its stream ID, varies depending on
80 whether a stream is client-initiated or server-initiated. In default stream
81 mode, if a client application calls L<SSL_read(3)> first before any call to
83 is using a server-initiated stream, and the L<SSL_read(3)> call will not
84 complete (either blocking, or failing appropriately if nonblocking mode is
85 configured) until the server initiates a stream. Conversely, if the client
87 connection, it is assumed that a client-initiated stream is to be used
88 and such a stream is created automatically.
90 Default stream mode is intended to aid compatibility with legacy applications.
91 New applications adopting QUIC should use multi-stream mode, described below,
92 and avoid use of the default stream functionality.
94 It is possible to use additional streams in default stream mode using
96 stream policy will need to be changed using L<SSL_set_incoming_stream_policy(3)>
98 using additional streams are strongly recommended to use multi-stream mode
101 Calling L<SSL_new_stream(3)> or L<SSL_accept_stream(3)> before a default stream
103 creation of a default stream.
105 =head2 Multi-Stream Mode
107 The recommended usage mode for new applications adopting QUIC is multi-stream
108 mode, in which no default stream is attached to the QUIC connection SSL object
111 L<SSL_accept_stream(3)> to create individual stream SSL objects for sending and
114 To use multi-stream mode, call L<SSL_set_default_stream_mode(3)> with an
116 to initiating the connection. The default stream mode cannot be changed after
119 When multi-stream mode is used, meaning that no default stream is associated
121 QUIC stream fail if called on the QUIC connection SSL object. For example, calls
148 L<BIO_s_dgram_pair(3)> provides BIO pair-like functionality but with datagram
154 L<BIO_s_dgram_mem(3)> provides a simple memory BIO-like interface but with
173 Traditionally, whether the application-level I/O APIs (such as L<SSL_read(3)>
177 application-level blocking mode using L<SSL_set_blocking_mode(3)>. See
182 Network-level I/O must always be performed in a nonblocking manner. The
183 application can still enjoy blocking semantics for calls to application-level
186 in nonblocking mode. For application-level blocking functionality, see
204 RFC-conformant QUIC shutdown process may take an extended amount of time. This
205 may not be suitable for short-lived processes which should exit immediately
206 after their usage of a QUIC connection is completed. A rapid shutdown mode
213 reflect the flow control state of the QUIC stream associated with the SSL
216 When used in nonblocking mode, B<SSL_ERROR_WANT_READ> indicates that the
217 receive part of a QUIC stream does not currently have any more data available to
218 be read, and B<SSL_ERROR_WANT_WRITE> indicates that the stream's internal buffer
226 loops need to use these functions; see B<APPLICATION-DRIVEN EVENT LOOPS> for
237 Whether QUIC operates in a client or server mode is determined by the
270 L<SSL_stateless(3)> support
287 Post-Handshake Client Authentication is not available as QUIC prohibits its use.
302 CCM mode is not currently supported.
307 but calls to the relevant functions are treated as no-ops:
331 B<THREAD ASSISTED MODE>.
351 using QUIC. The socket must be configured in nonblocking mode. You may or may
353 address; see the B<QUIC-SPECIFIC APIS> section for details.
390 Changes needed: The custom BIO must be re-architected to have datagram
402 in blocking mode or not. Traditionally, an SSL object has automatically operated
403 in blocking or nonblocking mode based on whether the underlying network BIO
404 operates in blocking or nonblocking mode. QUIC requires the use of a
405 nonblocking network BIO, therefore the blocking mode at the application level
407 L<SSL_set_blocking_mode(3)> API. The default mode is blocking. If an application
409 it must add a call to L<SSL_set_blocking_mode(3)> to disable blocking mode.
413 If your client application does not choose to use thread assisted mode, it must
416 regularly. If the SSL object is used in blocking mode, an ongoing blocking call
433 Client applications which use thread assisted mode do not need to be concerned
435 are handled in a timely manner. See B<THREAD ASSISTED MODE> for details.
442 QUIC stream to receive or provide application data, not to to determine if
450 L<SSL_shutdown_ex(3)> API instead. See B<QUIC-SPECIFIC APIS> for details.
467 to manage its own polling and event loop; see B<APPLICATION-DRIVEN EVENT LOOPS>.
481 Whether thread assisted mode will be used (see B<THREAD ASSISTED MODE>).
488 Applications which wish to implement QUIC-specific protocols should be aware of
489 the APIs listed under B<QUIC-SPECIFIC APIS> which provide access to
490 QUIC-specific functionality. For example, L<SSL_stream_conclude(3)> can be used
491 to indicate the end of the sending part of a stream, and L<SSL_shutdown_ex(3)>
495 applications avoid use of the default stream mode and use the multi-stream API
499 =head1 QUIC-SPECIFIC APIS
519 This is a non-specific I/O operation which makes a best effort attempt to
540 in a protocol-agnostic manner.
543 client-only usage. The listener interface may expand to support additional
549 I<ssl>. See L<SSL_new_domain(3)> and L<openssl-quic-concurrency(7)> for details
572 nonblocking mode, NULL is returned.
591 detail in L<openssl-quic-concurrency(7)>.
610 These functions facilitate operation in nonblocking mode.
624 These functions facilitate operation in nonblocking mode and are used in
645 QUIC stream. This corresponds to the FIN flag in the QUIC RFC. The receiving
646 part of a stream remains usable.
650 This allows an application to indicate the non-normal termination of the sending
651 part of a stream. This corresponds to the RESET_STREAM frame in the QUIC RFC.
655 This allows an application to determine the current stream states for the
656 sending and receiving parts of a stream respectively.
661 signalled by a peer which has performed a non-normal stream termination of the
662 respective sending or receiving part of a stream, if any.
671 Gets the QUIC connection SSL object from a QUIC stream SSL object.
675 Returns 1 if an SSL object is not a QUIC stream SSL object.
679 Provides information on the kind of QUIC stream which is attached
684 Returns the QUIC stream ID which the QUIC protocol has associated with a QUIC
685 stream.
689 Creates a new QUIC stream SSL object representing a new, locally-initiated QUIC
690 stream.
694 Potentially yields a new QUIC stream SSL object representing a new
695 remotely-initiated QUIC stream, blocking until one is available if the
700 Provides information on the number of pending remotely-initiated streams.
704 Configures how incoming, remotely-initiated streams are handled. The incoming
705 stream policy can be used to automatically reject streams created by the peer,
710 Used to configure or disable default stream mode; see the MODES OF OPERATION
716 facilitate QUIC-specific requirements and are closely associated with its use:
740 sockets being used with datagram semantics. This allows an alternative mode
756 Local addressing support refers to the ability of a BIO with datagram semantics
759 BIO can support local addressing and to enable local addressing support if it
769 =head1 THREAD ASSISTED MODE
771 The optional thread assisted mode for clients can be used with
772 L<OSSL_QUIC_client_thread_method(3)>. In this mode, a background thread is
784 threading support is not available or not supported by OpenSSL. However, it
785 does provide the simplest mode of usage for an application.
790 =head1 APPLICATION-DRIVEN EVENT LOOPS
822 It should configure the SSL object into nonblocking mode by calling
917 Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.