summaryrefslogtreecommitdiff
path: root/doc/man3/SSL_new_stream.pod
blob: 13f66474abea3c4fa98277d318a5550ff122f794 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
=pod

=head1 NAME

SSL_new_stream, SSL_STREAM_FLAG_UNI - create a new locally-initiated QUIC stream

=head1 SYNOPSIS

 #include <openssl/ssl.h>

 #define SSL_STREAM_FLAG_UNI     (1U << 0)
 SSL *SSL_new_stream(SSL *ssl, uint64_t flags);

=head1 DESCRIPTION

The SSL_new_stream() function, when passed a QUIC connection SSL object, creates
a new locally-initiated bidirectional or unidirectional QUIC stream and returns
the newly created QUIC stream SSL object.

If the B<SSL_STREAM_FLAG_UNI> flag is passed, a unidirectional stream is
created; else a bidirectional stream is created.

To retrieve the stream ID of the newly created stream, use
L<SSL_get_stream_id(3)>.

It is the caller's responsibility to free the QUIC stream SSL object using
L<SSL_free(3)>. The lifetime of the QUIC connection SSL object must exceed that
of the QUIC stream SSL object; in other words, the QUIC stream SSL object must
be freed first.

Once a stream has been created using SSL_new_stream(), it may be used in the
normal way using L<SSL_read(3)> and L<SSL_write(3)>.

This function can only be used to create stream objects for locally-initiated
streams. To accept incoming streams initiated by a peer, use
L<SSL_accept_stream(3)>.

=head1 RETURN VALUES

SSL_new_stream() returns a new stream object, or NULL on error.

This function fails if called on a QUIC stream SSL object or on a non-QUIC SSL
object.

=head1 SEE ALSO

L<SSL_accept_stream(3)>, L<SSL_free(3)>

=head1 HISTORY

SSL_new_stream() was added in OpenSSL 3.2.

=head1 COPYRIGHT

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

=cut