Hugo Landau
5e125829c0
QUIC MSST: Further documentation fixes
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:14 +01:00
Hugo Landau
3a61a96c1e
QUIC MSST: Clarify default XSO transitions
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:14 +01:00
Hugo Landau
47238a3d3f
QUIC MSST: Documentation fixes
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:14 +01:00
Hugo Landau
433d107a9b
QUIC APL: Fix a bug where avail could be used uninitialized
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:14 +01:00
Hugo Landau
97f30fd5d8
QUIC MSST: Test that SSL_free works in either order
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:14 +01:00
Hugo Landau
9cab4bd523
QUIC APL: Handle reference for multiple streams counting correctly
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:14 +01:00
Hugo Landau
008a61a544
REFCOUNT: Add support for querying refcount
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:14 +01:00
Hugo Landau
59c5c016e5
QUIC APL: Fix logic of SSL_get_stream_type
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:14 +01:00
Hugo Landau
22b1a96ff7
QUIC MSST: Minor fixes and cleanups
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:14 +01:00
Hugo Landau
496b8162b6
QUIC MSST: Documentation updates
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:14 +01:00
Hugo Landau
9715e3aacf
QUIC MSST: Fix tests on platforms with non-deterministic loopback interface behaviour (Apple)
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:14 +01:00
Hugo Landau
93651dc245
QUIC QRX: Fix a list usage bug
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:14 +01:00
Hugo Landau
571aff4bfa
Minor fixups
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:13 +01:00
Hugo Landau
ed835673ae
QUIC MSST: Tests
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:13 +01:00
Hugo Landau
acc6fde0d4
QUIC APL: Fix a bug where incoming unidirectional streams weren't detected
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:13 +01:00
Hugo Landau
f0e22d1be8
QUIC TSERVER: Allow STOP_SENDING/RESET_STREAM to be queried
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:13 +01:00
Hugo Landau
2289401685
QUIC TSERVER: Handle FINs correctly if ossl_quic_tserver_read is not called first
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:13 +01:00
Hugo Landau
8b5278942b
QUIC QSM: Minor bugfixes
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:13 +01:00
Hugo Landau
71e5551263
QUIC MSST: make update
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:13 +01:00
Hugo Landau
1e4a9d882f
QUIC MSST: Add documentation for new APIs
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:13 +01:00
Hugo Landau
9aaafc26e0
QUIC APL: Send STOP_SENDING/RESET_STREAM when XSO is freed
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:13 +01:00
Hugo Landau
0847e63ee5
QUIC QSM: Stream garbage collection
...
This allows QUIC_STREAM objects to be deleted when they are no longer
needed.
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:13 +01:00
Hugo Landau
9cacba434b
QUIC FIFD: Add support for callback on frame ACK
...
We need to get acknowledgement notifications for our STOP_SENDING and
STREAM_RESET frames as this information is needed to know when we can
delete a QUIC_STREAM object.
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:13 +01:00
Hugo Landau
c3a04ea2fd
QUIC DISPATCH/APL: Add SSL_stream_reset and status query APIs
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:13 +01:00
Hugo Landau
b6fc2294a1
QUIC RXDP: Record STOP_SENDING/RESET_STREAM event AEC codes consistently
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:13 +01:00
Hugo Landau
e8b9f63235
QUIC QSM: Clean up SEND_STREAM/RECV_STREAM handling
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:12 +01:00
Hugo Landau
723cbe8a73
QUIC CHANNEL: Do not copy terminate cause as it is not modified after termination
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:12 +01:00
Hugo Landau
b89c81e43b
QUIC QSM: Handle STOP_SENDING correctly
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:12 +01:00
Hugo Landau
90cecc406f
QUIC RXDP/QSM: Enforce MAX_STREAMS
...
Also use accept queue popping by the application as the retirement
event, i.e., as the cue to increase the limit.
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:12 +01:00
Hugo Landau
a6b6ea1737
QUIC TXP/CHANNEL: Generate MAX_STREAMS using RXFC
...
Though the RXFC was designed for stream flow control, its logic
is generic enough to use to control MAX_STREAMS generation.
Control of when _we_ can open streams is already done in a bespoke
fashion and doesn't use a TXFC, however (see
ossl_quic_stream_map_update_state).
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:12 +01:00
Hugo Landau
5bd9ddd86e
QUIC FC: Modify RXFC to support use for enforcing MAX_STREAMS
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:12 +01:00
Hugo Landau
999e13f40e
QUIC CHANNEL: Incoming streams implicitly create lower-numbered streams
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:12 +01:00
Hugo Landau
9caf981237
QUIC: Update faults test to use streams correctly
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:12 +01:00
Hugo Landau
5d27e7e9ae
QUIC FIFD: Ensure QUIC_STREAM is updated after QUIC_SSTREAM loss
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:12 +01:00
Hugo Landau
13ac037d01
QUIC APL: Fix locking in XSO code and fix tests
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:12 +01:00
Hugo Landau
995ff28210
QUIC CHANNEL, APL: Reject policy handling
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:12 +01:00
Hugo Landau
cb68ce9fa7
QUIC DISPATCH/APL: SSL_accept_stream, SSL_get_accept_queue_len
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:12 +01:00
Hugo Landau
8a90df343e
QUIC DISPATCH/APL: Add SSL_set_incoming_stream_reject_policy (unwired)
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:12 +01:00
Hugo Landau
8b7be3aa7e
QUIC DISPATCH/APL: Implement SSL_set_default_stream_mode, default XSO refactor
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:12 +01:00
Hugo Landau
19cb088772
QUIC DISPATCH/APL: Implement SSL_get_stream_id
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:11 +01:00
Hugo Landau
1bca3f1b2d
QUIC DISPATCH/APL: Implement SSL_get_stream_type
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:11 +01:00
Hugo Landau
e1dee2e379
QUIC DISPATCH/APL: Implement SSL_is_connection
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:11 +01:00
Hugo Landau
020d038939
QUIC DISPATCH/APL: Implement SSL_get0_connection
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:11 +01:00
Hugo Landau
21c80696e5
QUIC APL: Defer default XSO creation
...
QUIC in single-stream mode could be used with a protocol where the
server writes first or the client writes first. This determines
whether the single stream would be client or server initiated,
which affects the stream ID allocated to the stream. We should support
both client-sends-first and server-sends-first application protocols.
Thus, defer default XSO creation until the point in time at which
we know whether a client-first or server-first application protocol
is being used. We do this by taking whether SSL_read() or SSL_write()
is called first as a cue.
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:11 +01:00
Hugo Landau
b757beb5f3
QUIC TSERVER: Add support for multiple streams
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:11 +01:00
Hugo Landau
e8fe7a21ea
QUIC CHANNEL: Initialise state, FC credit for new streams correctly
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:11 +01:00
Hugo Landau
f20fdd16d8
QUIC CHANNEL: Handle incoming remotely-created streams
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:11 +01:00
Hugo Landau
2dbc39deac
QUIC APL: Add stream creation APIs
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:11 +01:00
Hugo Landau
cb5c208bf2
QUIC APL: Refactor stream-related code into QUIC_XSO object
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:11 +01:00
Hugo Landau
26ad16ea84
QUIC CHANNEL: Handle any number of streams
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20765 )
2023-05-12 14:47:11 +01:00