Hugo Landau
e825599213
QUIC CHANNEL: Defer QLOG instantiation until first event
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/23535 )
2024-02-19 10:15:46 +01:00
Hugo Landau
693d9afef4
QUIC CHANNEL: Fix idle timeout computation bug
...
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/23360 )
2024-02-08 16:50:00 +00:00
Hugo Landau
69616017a6
QUIC CHANNEL: Defer transport parameter generation
...
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/23360 )
2024-02-08 16:50:00 +00:00
Hugo Landau
ecff7ca4c1
QUIC CHANNEL: Add idle timeout configuration and stream count APIs
...
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/23360 )
2024-02-08 16:50:00 +00:00
Hugo Landau
b58abf9822
QUIC QLOG: Use set0
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22037 )
2024-02-02 11:50:30 +00:00
Hugo Landau
c55e144b89
QUIC CHANNEL: Ensure QLOG instance is used correctly on server side
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22037 )
2024-02-02 11:50:29 +00:00
Hugo Landau
29bd1e2d24
QLOG: Minor updates
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22037 )
2024-02-02 11:49:34 +00:00
Hugo Landau
43a128875d
QLOG: Minor fixes after port refactor
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22037 )
2024-02-02 11:49:34 +00:00
Hugo Landau
5849dbe52e
QLOG: Events: Implement transport:packet_received
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22037 )
2024-02-02 11:49:34 +00:00
Hugo Landau
fff66adfc8
QLOG: Events: Implement transport:packet_sent
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22037 )
2024-02-02 11:49:34 +00:00
Hugo Landau
407bcc8d55
QLOG: QUIC CHANNEL: Allow a log title to be specified
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22037 )
2024-02-02 11:49:34 +00:00
Hugo Landau
3e52878039
QLOG: Wiring: QUIC FIFD
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22037 )
2024-02-02 11:49:34 +00:00
Hugo Landau
a0a3a94912
QLOG: Events: Implement connectivity:connection_closed
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22037 )
2024-02-02 11:49:34 +00:00
Hugo Landau
da6a9a2e33
QLOG: Events: Implement transport:parameters_set
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22037 )
2024-02-02 11:49:34 +00:00
Hugo Landau
8fbac4d70e
QLOG: Events: Implement connectivity:connection_state_updated
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22037 )
2024-02-02 11:49:34 +00:00
Hugo Landau
4cecbc5400
QLOG: Events: Implement connectivity:connection_started
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22037 )
2024-02-02 11:49:34 +00:00
Hugo Landau
2031c0e928
QLOG: Wiring: QUIC CHANNEL
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22037 )
2024-02-02 11:49:34 +00:00
Hugo Landau
b71046b4a4
Minor updates
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:12:06 +00:00
Hugo Landau
22739cc3ac
QUIC APL, TSERVER: Start using a QUIC_ENGINE object
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:12:06 +00:00
Hugo Landau
3051339887
QUIC PORT: Fix BIO_dgram usage under Winsock due to bind requirement
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:12:06 +00:00
Hugo Landau
4df4add22d
QUIC PORT: Allow errors to be tracked at port level
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:12:06 +00:00
Hugo Landau
29fbdfafaf
QUIC CHANNEL, LCIDM: Factor duplicate CID generation function
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:12:00 +00:00
Hugo Landau
4760116f5a
QUIC CHANNEL: Finish cleanup of LCIDM integration
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:12:00 +00:00
Hugo Landau
5f86ae32c2
QUIC CHANNEL: Finish moving SRT handling to SRTM
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:12:00 +00:00
Hugo Landau
52dfe6f1c1
QUIC CHANNEL: Phase out use of QRX-DEMUX routing in favour of PORT-LCIDM routing
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:12:00 +00:00
Hugo Landau
cce6fccd4e
QUIC CHANNEL: Keep a reference to our LCIDM
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:11:59 +00:00
Hugo Landau
0df897321d
QUIC PORT: Enable injection of incoming URXEs into a channel via default handler rather than DEMUX routing
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:11:59 +00:00
Hugo Landau
6107619899
QUIC PORT: Partially move stateless reset handling to port
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:11:59 +00:00
Hugo Landau
073e5bc781
QUIC CHANNEL: Remove legacy calls for functionality moved to QUIC_PORT
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:11:59 +00:00
Hugo Landau
632b0c7e8c
QUIC PORT, CHANNEL: Move ticking code into QUIC_PORT
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:11:59 +00:00
Hugo Landau
4ed6b48d9d
QUIC PORT, CHANNEL: Move DEMUX and default packet handling out of CHANNEL
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:11:59 +00:00
Hugo Landau
ce503f5c85
QUIC PORT: Keep a list of all child channels
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:11:59 +00:00
Hugo Landau
f98bc5c95b
QUIC CHANNEL, PORT: Abstract time retrieval
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:11:59 +00:00
Hugo Landau
34fa182e1d
QUIC CHANNEL, TSERVER: Move to using libctx/propq/mutex/now_cb via QUIC_PORT
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:11:59 +00:00
Hugo Landau
496f0beb99
QUIC CHANNEL: Make a QUIC_PORT mandatory
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:11:59 +00:00
Hugo Landau
12ab8afceb
QUIC CHANNEL: Keep a reference to a QUIC_PORT
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674 )
2023-12-21 08:11:59 +00:00
Hugo Landau
f94cacb70b
QUIC CHANNEL: Set reason string for missing tparams extension
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22523 )
2023-11-02 14:22:04 +01:00
Hugo Landau
758e9b537a
QUIC CHANNEL: Make ping deadline and idle deadline calculation consistent
...
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22533 )
2023-10-30 08:08:05 +00:00
Hugo Landau
c7ed5e4697
QUIC CHANNEL: Handle ping deadlines differently
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22476 )
2023-10-25 11:14:24 +01:00
Hugo Landau
29f633840d
QUIC CHANNEL: Tweak crypto buffer sizes
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22476 )
2023-10-25 11:14:24 +01:00
Hugo Landau
4d100bb76a
QUIC CHANNEL: Correct timeout calculation for ACKs
...
ACKs are not restricted by CC so do not consider CC when determining
when we will emit an ACK.
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22476 )
2023-10-25 11:14:24 +01:00
Hugo Landau
82b7a0eee9
QUIC TLS: Ensure QUIC_TLS is ticked between each processed RX packet
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22476 )
2023-10-25 11:14:23 +01:00
Matt Caswell
b62ac1abfc
Don't fail on a bad dcid in the tranport params when fuzzing
...
We accept a bad original destination connection id in the transport params
while we are fuzzing since this may change every time.
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Hugo Landau <hlandau@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22368 )
2023-10-23 10:08:12 +01:00
Hugo Landau
461d41174b
QUIC: Prevent incoming oversize tokens
...
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22436 )
2023-10-20 16:31:40 +01:00
Tomas Mraz
7757f5ef73
QUIC: Add handling of SSL_get_shutdown()
...
Return SSL_SENT_SHUTDOWN and SSL_RECEIVED_SHUTDOWN with semantics
similar to TLS connections.
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22408 )
2023-10-20 16:29:28 +01:00
Tomas Mraz
8e520d2714
Postpone two TODO(QUIC) items appropriately
...
The one in ch_rx_handle_packet() is a tuning thing -> QUIC FUTURE
The one in ossl_quic_tserver_shutdown() is a server thing -> QUIC SERVER
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22408 )
2023-10-20 16:29:18 +01:00
Matt Caswell
098f27f9ef
Ignore ping deadline when calculating tick deadline if we can't send
...
If the CC TX allowance is zero then we cannot send a PING frame at the
moment, so do not take into account the ping deadline when calculating the
tick deadline in that case.
This avoids the hang found by the fuzzer mentioned in
https://github.com/openssl/openssl/pull/22368#issuecomment-1765131727
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22410 )
2023-10-19 11:54:44 +02:00
Matt Caswell
56e303259e
Ignore retry packets that arrive too late
...
RFC 9000 s 17.2.5.2 says
> After the client has received and processed an Initial or Retry packet
> from the server, it MUST discard any subsequent Retry packets that it
> receives.
We were checking for multiple Retry packets, but not if we had already
processed an Initial packet.
Fixes the assertion failure noted in
https://github.com/openssl/openssl/pull/22368#issuecomment-1765618884
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22411 )
2023-10-19 11:53:07 +02:00
Hugo Landau
70e809b08a
QUIC CHANNEL: Add missing duplicate TPARAM handling cases
...
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22039 )
2023-09-13 22:16:34 +02:00
Matt Caswell
982dae89d8
Ensure QUIC-TLS errors raised during channel start are available to caller
...
TLS misconfiguration errors should be shown to the application to enable
diagnosis of the problem. Otherwise you just get a generical "internal
error" message.
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22066 )
2023-09-13 09:45:17 +01:00