Lines Matching +full:multi +full:- +full:function

1 .\" -*- mode: troff; coding: utf-8 -*-
57 .IX Title "OSSL-GUIDE-QUIC-MULTI-STREAM 7ossl"
58 .TH OSSL-GUIDE-QUIC-MULTI-STREAM 7ossl 2025-09-30 3.5.4 OpenSSL
64 ossl\-guide\-quic\-multi\-stream
65 \&\- OpenSSL Guide: Writing a simple multi\-stream QUIC client
69 QUIC multi-stream application. It assumes a basic understanding of QUIC and how
70 it is used in OpenSSL. See \fBossl\-guide\-quic\-introduction\fR\|(7) and
71 \&\fBossl\-guide\-quic\-client\-block\fR\|(7).
74 In a QUIC multi-stream application we separate out the concepts of a QUIC
98 (see \fBossl\-guide\-libraries\-introduction\fR\|(7)). In particular most OpenSSL
113 (by default) the default stream will be a client-initiated bi-directional
116 stream (whether it is bi-directional or uni-directional).
121 It is recommended that new multi-stream applications should not use a default
130 bi-directional or a uni-directional stream.
132 The function returns a new QUIC stream \fBSSL\fR object for sending and receiving
135 The peer may also initiate streams. An application can use the function
150 Any stream may be bi-directional or uni-directional. If it is uni-directional
151 then the initiator can write to it but not read from it, and vice-versa for the
188 the connection via a call to \fBSSL_get0_connection\fR\|(3). Multi-threaded
192 you must be careful to not to call any function that uses the connection object
195 \&\fBSSL_get_accept_stream_queue_len\fR\|(3) which are thread-safe).
198 \&\fBSSL\fR connection object. Therefore certain function calls that are relevant to
199 the connection as a whole will not work on a stream. For example the function
203 .SH "SIMPLE MULTI-STREAM QUIC CLIENT EXAMPLE"
204 .IX Header "SIMPLE MULTI-STREAM QUIC CLIENT EXAMPLE"
206 a simple multi-stream QUIC client application which connects to a server, send
208 over QUIC is non-standard and will not be supported by real world servers. This
212 covered on the \fBossl\-guide\-quic\-client\-block\fR\|(7) page and we assume that you
214 blocking QUIC client and the multi-stream QUIC client. Although the example code
216 See \fBossl\-guide\-quic\-client\-non\-block\fR\|(7) for more information about writing a
219 The complete source code for this example multi-stream QUIC client is available
221 \&\f(CW\*(C`quic\-multi\-stream.c\*(C'\fR. It is also available online at
222 <https://github.com/openssl/openssl/blob/master/demos/guide/quic\-multi\-stream.c>.
226 to disable the default stream for our multi-stream client. To do this we call
227 the \fBSSL_set_default_stream_mode\fR\|(3) function and pass in our connection \fBSSL\fR
244 first of these will be a bi-directional stream and the second one will be a
245 uni-directional one:
250 \& * bi\-directional, and the second will be uni\-directional.
263 avoid repeating too much code we write a simple helper function to send an HTTP
285 appropriate HTTP requests. We can then call our helper function above to send
308 In this example \fBstream1\fR is a bi-directional stream so, once we have sent the
310 we just repeatedly call \fBSSL_read_ex\fR\|(3) until that function fails (indicating
325 \& * number of bytes that we read. The data could be non\-printable or
342 function to find out more details. Since this is a blocking application this
348 The \fBSSL_get_stream_read_state\fR\|(3) function can be used to distinguish between
368 \& * reset \- or some failure occurred on the underlying connection.
395 Our \fBstream2\fR object that we created above was a uni-directional stream so it
407 \& * containing the data requested in our uni\-directional stream. This doesn\*(Aqt
443 \&\fBossl\-guide\-introduction\fR\|(7), \fBossl\-guide\-libraries\-introduction\fR\|(7),
444 \&\fBossl\-guide\-libssl\-introduction\fR\|(7) \fBossl\-guide\-quic\-introduction\fR\|(7),
445 \&\fBossl\-guide\-quic\-client\-block\fR\|(7)