]> git.ipfire.org Git - thirdparty/openssl.git/log
thirdparty/openssl.git
5 months agoUpdate doc/man3/SSL_new_stream.pod
Neil Horman [Thu, 23 Jan 2025 15:26:44 +0000 (10:26 -0500)] 
Update doc/man3/SSL_new_stream.pod

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26527)

5 months agoquic-hq-interop: Allow for retries if we've reached our max stream limit
Neil Horman [Wed, 22 Jan 2025 18:19:52 +0000 (13:19 -0500)] 
quic-hq-interop: Allow for retries if we've reached our max stream limit

Several servers defer the sending of max stream frames.  For instance
quic-go uses a go-routine to do the sending after sufficient existing
streams have finished, while mvfst seems to wait for all outstanding
streams to be closed before issuing a new batch.  This result in the
client, if all streams are in use, getting a transient NULL return from
SSL_new_stream().  Check for the stream limit being reached and allow a
number of retries before giving up to give the server a chance to issue
us more streams.  Also dead-reckon the batch count of streams we use in
parallel to be 1/4 of our total number of available streams (generally
hard coded to 100 for most servers) to avoid using all our streams at
once.  It would be really nice to have an api to expose our negotiated
transport parameters so that the application can know what this limit
is, but until then we have to just guess.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26527)

5 months agoFix up some nits
Neil Horman [Wed, 22 Jan 2025 19:29:19 +0000 (14:29 -0500)] 
Fix up some nits

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoremove check of pending in ossl_quic_free
Neil Horman [Wed, 22 Jan 2025 15:25:47 +0000 (10:25 -0500)] 
remove check of pending in ossl_quic_free

Not strictly needed

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoRemove vestigual accepted flag
Neil Horman [Wed, 22 Jan 2025 15:10:30 +0000 (10:10 -0500)] 
Remove vestigual accepted flag

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoFix more typos
Neil Horman [Wed, 22 Jan 2025 13:37:15 +0000 (08:37 -0500)] 
Fix more typos

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoFix some typos
Neil Horman [Wed, 22 Jan 2025 12:38:51 +0000 (07:38 -0500)] 
Fix some typos

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoupdate docs with reference to SSL_set_ex_data
Neil Horman [Mon, 20 Jan 2025 22:03:42 +0000 (17:03 -0500)] 
update docs with reference to SSL_set_ex_data

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoAttempt to use NULL listeners to avoid use after free
Neil Horman [Tue, 21 Jan 2025 21:55:15 +0000 (16:55 -0500)] 
Attempt to use NULL listeners to avoid use after free

As per @sashan suggestion, try pre-creating user ssls with a NULL
listener

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoUpdate man page to note limitations of callbacks for QUIC
Neil Horman [Fri, 17 Jan 2025 18:36:26 +0000 (13:36 -0500)] 
Update man page to note limitations of callbacks for QUIC

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoFix memory leak in pre-allocated listeners
Neil Horman [Tue, 14 Jan 2025 22:52:20 +0000 (17:52 -0500)] 
Fix memory leak in pre-allocated listeners

We have a chicken and egg problem.

Normally when we create a connection object in quic, we associate it
with a listener, and up the ref on the parent listener, which is fine.

However, now that we are pre-allocating user_ssl objects for incomming
connections we have a situation in which:
1) The pre-alocated connection object holds a ref on the listener
2) The application has no awareness of the quic connection object (and
   so can't free it)
3) The freeing of the listener object never calls into the quic stack,
   because its reference count may hold references from connections that
   haven't been accepted yet

We could require that applications register a function for the
new_pending_conn callback, and track/free these pending connections, but
that seems like alot of extra unneeded work to place on the application

Instead:
a) add a quic_conn_st flag named accepted
b) When pre-allocating connections, clear the flag in (a) and _dont_
   hold a reference to the parent listener
c) in SSL_accept_connection, set the accepted flag and reference the
listener
d) in ossl_quic_free drop the listener reference only if the accepted
flag is set
c) expressly free all user_ssl objects in ossl_quic_port_drop_incoming

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoAdd changes.md entry noting the limitations of recursive SSL calls
Neil Horman [Mon, 13 Jan 2025 17:06:49 +0000 (12:06 -0500)] 
Add changes.md entry noting the limitations of recursive SSL calls

QUIC can't currently make recursive SSL calls, as it potentially results
in deadlock

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agorename new_pending_ssl to new_pending_conn
Neil Horman [Fri, 10 Jan 2025 17:20:40 +0000 (12:20 -0500)] 
rename new_pending_ssl to new_pending_conn

Make it clear its only announcing connections, not streams

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoRun Make update
Neil Horman [Thu, 9 Jan 2025 14:25:22 +0000 (09:25 -0500)] 
Run Make update

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoAdd docs for new callback registration
Neil Horman [Thu, 9 Jan 2025 13:27:58 +0000 (08:27 -0500)] 
Add docs for new callback registration

Add docs for SSL_CTX_set_new_pending_ssl_cb

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoAdd a test to validate our new SSL_accept connection objects
Neil Horman [Wed, 8 Jan 2025 23:31:55 +0000 (18:31 -0500)] 
Add a test to validate our new SSL_accept connection objects

Quick test to validate that:

a) our new pending SSL accept callback works
and
b) That our callback passed SSL objects match those that are returned
by SSL_accept_connection

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoAdd a callback to announce newly created ssl waiting acceptance
Neil Horman [Wed, 8 Jan 2025 19:59:58 +0000 (14:59 -0500)] 
Add a callback to announce newly created ssl waiting acceptance

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoReturn channel tls from ossl_quic_accept_connection
Neil Horman [Wed, 8 Jan 2025 19:12:28 +0000 (14:12 -0500)] 
Return channel tls from ossl_quic_accept_connection

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agouse internal callback to generate user ssl
Neil Horman [Wed, 8 Jan 2025 19:08:36 +0000 (14:08 -0500)] 
use internal callback to generate user ssl

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoAdd callback to get user ssl on channel creation
Neil Horman [Wed, 8 Jan 2025 18:23:55 +0000 (13:23 -0500)] 
Add callback to get user ssl on channel creation

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26361)

5 months agoIf server receives NEW_TOKEN frame, respond with PROTOCOL_VIOLATION
Andrew Dinh [Wed, 15 Jan 2025 15:12:31 +0000 (23:12 +0800)] 
If server receives NEW_TOKEN frame, respond with PROTOCOL_VIOLATION

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26426)

5 months agoFix MARSHALLED_TOKEN_MAX_LEN
Andrew Dinh [Thu, 2 Jan 2025 03:46:06 +0000 (19:46 -0800)] 
Fix MARSHALLED_TOKEN_MAX_LEN

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Paul Dale <ppzgs1@gmail.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26333)

5 months agoQUIC FUTURE: Add concurrency architecture design document
Hugo Landau [Wed, 24 Apr 2024 12:38:27 +0000 (13:38 +0100)] 
QUIC FUTURE: Add concurrency architecture design document

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26025)

5 months agoFix sizing on variable in ossl-nghttp3-demo-server
Neil Horman [Thu, 9 Jan 2025 17:12:09 +0000 (12:12 -0500)] 
Fix sizing on variable in ossl-nghttp3-demo-server

On working on a rebase for the quic-server branch, I noted that the
rebase was failing on the http3 server.  It occurs because the new CI
ubuntu container appears to have FORTIFY_SOURCE enabled and trips over
the call to read here.  Specifically the compiler notes that in passing
an int into the read syscall (which accepts a size_t as the 3rd
argument), may interpret a negative value as a very large unsigned value
that exeeds the size allowed by a read call.

Fix it by converting the size variable to a size_t to ensure that the
signing is correct

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26368)

5 months agoImplement SSL_new_from_listener()
Alexandr Nedvedicky [Mon, 9 Dec 2024 09:49:05 +0000 (10:49 +0100)] 
Implement SSL_new_from_listener()

SSL_new_from_listner() creates QUIC connection object (QCSO)
from listener. Caller can use the object retuned from
SSL_new_from_listener() to connect to remote QUIC server.
The QCSO created here shares engine/port with listener.

the change is covered by `test_ssl_new_from_listener()` in
test/quicapitest.c

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26138)

5 months agoMake quic interop tests pass with the demo server
Jean-Frederic Clere [Mon, 16 Dec 2024 09:28:55 +0000 (10:28 +0100)] 
Make quic interop tests pass with the demo server

Included are also multiple style fixes.

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26193)

5 months agoIPv6 support for quic interop
Andrew Dinh [Mon, 16 Dec 2024 17:23:59 +0000 (12:23 -0500)] 
IPv6 support for quic interop

Modify the QUIC HQ interop server/client to support both IPv4 and IPv6.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26194)

5 months agoDisable address validation for throughput test
Neil Horman [Tue, 17 Dec 2024 15:54:47 +0000 (10:54 -0500)] 
Disable address validation for throughput test

The multiplexing test using quiche as a client seems to get confused
when server address validation is enabled.  specifically it writes the
wrong keys into its keylog file, causing the test to fail when tshark
can't decode the tls connection that is established.  Fix it by
disabling address validation for the multiplexing/transfer test

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26198)

5 months agoDo read retries in quic hq-interop server
Neil Horman [Sun, 15 Dec 2024 20:26:41 +0000 (15:26 -0500)] 
Do read retries in quic hq-interop server

Normally the throughput test in the interop harness requests several
hundred very small files, resulting in lots of small stream packets from
the client, which are nominally read in a single read operation (as they
typically fit into a single stream frame), and the server was written to
expect that.  However, its still possible, if a stream frame is packed
to the end of a datagram, that only part of its content is carried,
finished in a subsequent stream packet, which leads to a short read.

Augment the server to properly handle SSL_read transient failures so
that such an occurance is handled properly.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26198)

5 months agoFix SSL_read error handling in http3 demo server
Neil Horman [Sat, 14 Dec 2024 14:06:11 +0000 (09:06 -0500)] 
Fix SSL_read error handling in http3 demo server

The SSL_read error handling misses the ZERO_RETURN clause which is
non-fatal, correct that.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26180)

5 months agoCorrect copying of the url value
Neil Horman [Fri, 13 Dec 2024 13:54:49 +0000 (08:54 -0500)] 
Correct copying of the url value

When setting up the url value we copy data from memory regions that
overlap, it leads to bogus output, correct that.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26180)

5 months agoPreserve fileprefix accross reuse in http3 demo server
Neil Horman [Fri, 13 Dec 2024 00:02:54 +0000 (19:02 -0500)] 
Preserve fileprefix accross reuse in http3 demo server

The fileprefix that we serve content from needs to be preserved accross
h3ssl reuse.  Make sure we restore it after zeroing the struct.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26180)

5 months agoAdd http3 test to the interop container
Neil Horman [Wed, 4 Dec 2024 20:27:00 +0000 (15:27 -0500)] 
Add http3 test to the interop container

Set fileprefix for interop container on http3 server test

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26180)

5 months agoEncrypt the address validation token
Andrew Dinh [Thu, 12 Dec 2024 15:28:52 +0000 (09:28 -0600)] 
Encrypt the address validation token

Store an EVP_CIPHER_CTX context with an ephemeral key set in port
and use it to encrypt/decrypt the validation token.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26165)

5 months agoremoving debug code from quic_impl
Neil Horman [Mon, 16 Dec 2024 17:08:08 +0000 (12:08 -0500)] 
removing debug code from quic_impl

I had experimented with starting the ssl handshake during accept, and
forgot to remove it

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26178)

5 months agoFix typo
Neil Horman [Mon, 16 Dec 2024 14:11:05 +0000 (09:11 -0500)] 
Fix typo

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26178)

5 months agoaugment CI to run ampilficationlimit tests
Neil Horman [Thu, 12 Dec 2024 14:43:27 +0000 (09:43 -0500)] 
augment CI to run ampilficationlimit tests

NOTE: Do this for the server test as well after rebase when http3
commits get merged

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26178)

5 months agomodify docker endpoint to not do address validation on transfer test
Neil Horman [Thu, 12 Dec 2024 14:40:29 +0000 (09:40 -0500)] 
modify docker endpoint to not do address validation on transfer test

quic interop uses the transfer test as part of the amplificationlimit
test, and as such we can't do address validation with retry frames
there, as the test requires it

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26178)

5 months agoAdd tracking of receive credit for unvalidated connections
Neil Horman [Mon, 9 Dec 2024 15:21:54 +0000 (10:21 -0500)] 
Add tracking of receive credit for unvalidated connections

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26178)

5 months agoAdd unvalidated credit tracking to packetizer
Neil Horman [Mon, 9 Dec 2024 13:58:28 +0000 (08:58 -0500)] 
Add unvalidated credit tracking to packetizer

Add data to track how much unvalidated credit we are sending and
receiving until such time as we are validated.  Validated conditions
are:

1) A retry token is sent, received, and validated
2) a handshake is completed on the connection

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26178)

5 months agoAdd a warning that disabling server validation is not recommended
Neil Horman [Fri, 6 Dec 2024 16:28:02 +0000 (11:28 -0500)] 
Add a warning that disabling server validation is not recommended

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26114)

5 months agoClarify that this validation only relates to retry packets
Neil Horman [Wed, 4 Dec 2024 21:12:02 +0000 (16:12 -0500)] 
Clarify that this validation only relates to retry packets

Disabling server address validation here only relates to new connections
that arrive without a token.  Future connections using tokens provided
by the server via NEW_TOKEN frames will still be validated

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26114)

5 months agoDisable server address validation on interop handshake test
Neil Horman [Wed, 4 Dec 2024 14:33:30 +0000 (09:33 -0500)] 
Disable server address validation on interop handshake test

The handshake test in the interop suite requires that no server address
validation be preformed, so disable it for this test

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26114)

5 months agoAdd a public flag to disable address validation on listeners
Neil Horman [Wed, 4 Dec 2024 14:25:12 +0000 (09:25 -0500)] 
Add a public flag to disable address validation on listeners

Now that we have the infrastructure to skip address validation, add a
public flag to SSL_new_listener and SSL_new_listener_from to allow the
skipping of address validation on selected quic listener SSL objects

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26114)

5 months agoAdd quic port flag to turn off address validation
Neil Horman [Tue, 3 Dec 2024 21:52:55 +0000 (16:52 -0500)] 
Add quic port flag to turn off address validation

Give us the infrastrucute to skip addr validation on the server

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26114)

5 months agoEnhance port binding to allow connections without odcid
Neil Horman [Tue, 3 Dec 2024 21:44:28 +0000 (16:44 -0500)] 
Enhance port binding to allow connections without odcid

If we opt not to do server address validation, we have no odcid
and therefore never reserved a local cid

We need to follow the initial code path to generate one

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26114)

5 months agoSSL_free() does check for != NULL (thanks Sashan)
Jean-Frederic Clere [Tue, 10 Dec 2024 09:08:11 +0000 (10:08 +0100)] 
SSL_free() does check for != NULL (thanks Sashan)

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agoFixes according Sashan review.
Jean-Frederic Clere [Mon, 9 Dec 2024 14:50:02 +0000 (15:50 +0100)] 
Fixes according Sashan review.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agoport the 2 improvement suggested by @nhorman to help to run the
Jean-Frederic Clere [Mon, 9 Dec 2024 13:32:28 +0000 (14:32 +0100)] 
port the 2 improvement suggested by @nhorman to help to run the
quic-interop-runner.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agoArrange the code following the reviews.
Jean-Frederic Clere [Thu, 5 Dec 2024 14:48:25 +0000 (15:48 +0100)] 
Arrange the code following the reviews.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agoFix small things from the review.
Jean-Frederic Clere [Wed, 4 Dec 2024 09:12:15 +0000 (10:12 +0100)] 
Fix small things from the review.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agoAdd <sys/socket.h> for OpenBSD.
Jean-Frederic Clere [Tue, 3 Dec 2024 15:43:59 +0000 (16:43 +0100)] 
Add <sys/socket.h> for OpenBSD.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agotypo in comment.
Jean-Frederic Clere [Tue, 3 Dec 2024 15:35:50 +0000 (16:35 +0100)] 
typo in comment.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agoArrange the remove_id() logic to be able to remove multiple stream.
Jean-Frederic Clere [Tue, 3 Dec 2024 15:18:03 +0000 (16:18 +0100)] 
Arrange the  remove_id() logic to be able to remove multiple stream.
create a new h3conn in read_from_ssl_ids() when we have a new
connection.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agoArrange macox errors.
Jean-Frederic Clere [Wed, 6 Nov 2024 09:59:57 +0000 (10:59 +0100)] 
Arrange macox errors.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agomake check style happy.
Jean-Frederic Clere [Mon, 4 Nov 2024 14:34:37 +0000 (15:34 +0100)] 
make check style happy.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agoArrange the logic:
Jean-Frederic Clere [Mon, 4 Nov 2024 10:17:35 +0000 (11:17 +0100)] 
Arrange the logic:
SSL_poll() without SSL_POLL_FLAG_NO_HANDLE_EVENT ticks for each stream
we have in SSL_poll() that prevents the server logic to get all events
Use SSL_poll() with SSL_POLL_FLAG_NO_HANDLE_EVENT and
SSL_handle_events() prevents the problem.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agoread_from_ssl_ids() before wait_for_activity if something was received
Jean-Frederic Clere [Wed, 30 Oct 2024 17:06:07 +0000 (18:06 +0100)] 
read_from_ssl_ids() before wait_for_activity if something was received
before and the first time we are in the loop.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agoArrange poll logic and get it working with chrome.
Jean-Frederic Clere [Mon, 28 Oct 2024 17:29:36 +0000 (18:29 +0100)] 
Arrange poll logic and get it working with chrome.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agoAllow to send some files to test with browsers.
Jean-Frederic Clere [Mon, 28 Oct 2024 09:37:31 +0000 (10:37 +0100)] 
Allow to send some files to test with browsers.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agoUse something like wait_for_activity() from demos/quic-server-non-block.c
Jean-Frederic Clere [Fri, 25 Oct 2024 14:23:35 +0000 (16:23 +0200)] 
Use something like wait_for_activity() from demos/quic-server-non-block.c

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25859)

5 months agoAugment RETRY validation token
Andrew Dinh [Wed, 27 Nov 2024 20:35:16 +0000 (12:35 -0800)] 
Augment RETRY validation token

Adds fields to the QUIC RETRY packet validation token:
timestamp, remote_addr, odcid, & rscid.

Also adds functionality to validate the token once returned by the client.

Note that this does not encrypt the token yet.

Also check that the RSCID stored in the RETRY validation
token matches the DCID in the header.

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26048)

5 months agoDetermine which packet to drop for retry
Neil Horman [Thu, 28 Nov 2024 12:50:22 +0000 (07:50 -0500)] 
Determine which packet to drop for retry

When doing a retry after a version negotiation, we actually need to drop
packet 1 rather than 0 to get a retransmit of the initial packet

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26000)

5 months agoFix length check for datagram size in quic
Neil Horman [Thu, 28 Nov 2024 12:42:56 +0000 (07:42 -0500)] 
Fix length check for datagram size in quic

RFC says we should only accept datagrams of at least 1200 bytes, so the
check should discard anything under that, not over that

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26000)

5 months agoAugment quic interop harness to support server side interop tests
Neil Horman [Mon, 11 Nov 2024 22:12:19 +0000 (17:12 -0500)] 
Augment quic interop harness to support server side interop tests

the quic-interop-runner that we use for interop testing currently only
supports openssl client testing, as we had previously not had a server
to test with.

This PR rectifies that by doing the following:
1) Adding a quic-hq-interop-server.c file in demos/guide
2) Augmenting our interop Dockerfile and entrypoint to support our
   interop containter running in a server role

With these changes we are able to do server side interop testing

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26000)

5 months agoAdd documentation for BIO_dgram_set0_local_addr()
Matt Caswell [Tue, 26 Nov 2024 12:46:00 +0000 (12:46 +0000)] 
Add documentation for BIO_dgram_set0_local_addr()

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26066)

5 months agoAdd the ablity to set a local address for BIO_dgram_pair
Matt Caswell [Tue, 26 Nov 2024 12:36:52 +0000 (12:36 +0000)] 
Add the ablity to set a local address for BIO_dgram_pair

BIOs created from a BIO_dgram_pair don't normally have a local BIO_ADDR
associated with them. This allows us to set one.

Fixes openssl/project#933

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26066)

5 months agoMake version negotiation packets use network byte order
Neil Horman [Thu, 21 Nov 2024 14:18:53 +0000 (09:18 -0500)] 
Make version negotiation packets use network byte order

@t8m pointed out that versino negotiation packets weren't guaranteeing
network byte ordering in the array of supported versions.

Convert the client to use network byte order on send and receipt.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25968)

5 months agoFixup tests to properly check version negotiation
Neil Horman [Fri, 15 Nov 2024 19:32:56 +0000 (14:32 -0500)] 
Fixup tests to properly check version negotiation

Currently the quic_multistream_test tests version negotiation..sort of.

It uses a packet injector to force the tserver to send a version
negotiation packet back to the client.  Thats no longer needed as the
server will respond to an invalid version properly.

So alter script_74 to, instead of using the injector, use a quic channel
mutator to invalidate the version provided in the initial packet.  Then
we attempt to connect.  If the server responds with a version
negotiation packet and the client restarts with the proper version, then
the test passes, as the connection is extablished.

Also, while we're in here, update the gen_version_neg function to
properly insert a 0 version into the packet header for script_75, as
version negotiation packets require that to be set, otherwise script_75
will fail now when the server notices this discrepancy.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25968)

5 months agoHandle the receipt of version negotiation packets
Neil Horman [Fri, 15 Nov 2024 19:31:36 +0000 (14:31 -0500)] 
Handle the receipt of version negotiation packets

On the client side, when we get a version negotiation packet, we need to
interrogate the supported version list from the server, and either:
1) drop the connection if we don't see a version we can work with

2) select a supported version and try the negotiation again

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25968)

5 months agoAdd port version negotiation response from server
Neil Horman [Fri, 15 Nov 2024 19:09:16 +0000 (14:09 -0500)] 
Add port version negotiation response from server

If the server receives an Initial packet with a version number we don't
support (currently a fixed check for QUIC_VERSION_1), instead of
dropping it, respond with a version negotiation packet to the peer

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25968)

5 months agoAllow packetizer to accept an arg to set protocol version
Neil Horman [Fri, 15 Nov 2024 18:55:05 +0000 (13:55 -0500)] 
Allow packetizer to accept an arg to set protocol version

In preparation for doing version negotiation, expose the ability to have
the packetiser for QUIC set a configured protocol version.  We only set
it to QUIC_VERSION_1 for now, but it allows for us to set different
protocols in the future.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25968)

5 months agoAugment ossl_quic_wire_decode_pkt_hdr
Neil Horman [Fri, 15 Nov 2024 18:34:37 +0000 (13:34 -0500)] 
Augment ossl_quic_wire_decode_pkt_hdr

In preparation for supporting the handling of version negotiation, we
need to be able to detect why the decoding of quic header failed.
Specifically, ossl_quic_wire_decode_pkt_hdr fails if the version
provided in the header isn't QUIC_VERSION_1.  We want to keep that, as
we don't support anything else, but the server code needs to
differentiate when we fail decode because of a version problem, vs some
other more fatal malforming issue.

So add a uint64_t *fail_cause pointer that gets filled out with a
failure cause.  We only use VERSION failures right now, but we can
expand this later if needed

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25968)

5 months agoSSL_inject_net_dgram() should return result of ossl_quic_demux_inject()
sashan [Thu, 10 Oct 2024 08:48:07 +0000 (10:48 +0200)] 
SSL_inject_net_dgram() should return result of ossl_quic_demux_inject()

This got introduced by #595288251bb (QUIC APL: Ensure APL
functions use correct prologue)

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25659)

5 months agoInclude RETRY_CID transport parameter when handling retried connection
Neil Horman [Thu, 7 Nov 2024 14:34:29 +0000 (09:34 -0500)] 
Include RETRY_CID transport parameter when handling retried connection

After sending a retry frame from a server, the subsequent server hello
record must include the RETRY_SCID transport parameter, as per RFC 9000:
https://datatracker.ietf.org/doc/html/rfc9000#section-7.3

Implement the encoding of said retry_source_connection_id transport
param, and fix up tests to address the impact of that change.  Test
changes amount to:
1) quicapitest needs to have its tparam test augmented such that it
   doesn't inject the retry_scid on its own, as the quic stack does it
   for the test now
2) quicapitest needs to have the ssl_trace test adjusted so the expected
   record values are reflected.

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25890)

5 months agoSelect proper ORIG_DCID when sending server hello over quic
Neil Horman [Wed, 6 Nov 2024 13:47:04 +0000 (08:47 -0500)] 
Select proper ORIG_DCID when sending server hello over quic

When establishing a connection over quic, if the channel is established
in response to a retry request from the server, the ORIG_DCID transport
parameter must reflect the original dcid sent from the client in the
first inital packet that the server sent the retry request in response
to.

As opposed to establishing a connection without the retry request, when
address validation isn't in use, where the ORIG_DCID parameter just
represents the the dcid that the client sent.

Augment the channel creation code to select the 'right' DCID when
encoding server side transport parameters

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25890)

5 months agoGenerate initial packet keys based on new dcid for addr validation
Neil Horman [Tue, 5 Nov 2024 21:25:25 +0000 (16:25 -0500)] 
Generate initial packet keys based on new dcid for addr validation

When using retry packets in QUIC to implement address validation, the
2nd inital packet that arrives after the server sends the retry frame
will have its CRYPTO packet encrypted using keys derived from the new
dcid, rather than the dcid in the 1st initial packet.  Update the
channel creation code to update those keys on the server so that the
CRYPTO packet is decrypted successfully

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25890)

5 months agoImplement Server Address validation using retry packets
Saša Nedvědický [Tue, 5 Nov 2024 21:15:55 +0000 (16:15 -0500)] 
Implement Server Address validation using retry packets

RFC 9000 describes a method for preforming server address validation on
QUIC using retry packets.  Based on:
https://datatracker.ietf.org/doc/html/rfc9000#section-17.2.5.2

We do the following:
1) Client sends an Initial packet without a retry token
2) Server abandons the initial packet and responds with a retry frame
   which includes a retry token and integrity tag and new SCID
3) Client send the initial packet again, updating the encryption keys
   for the connection based on the SCID sent in (2), using it as the new
   DCID, including the retry token/tag provided in (2).
4) Server validates the token in (3) and creates a new connection using
   the updated DCID from the client to generate its encryption keys

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25890)

5 months agoUpdate QUIC related man7 pages for the added server functionality
Andrew Dinh [Thu, 31 Oct 2024 05:18:11 +0000 (22:18 -0700)] 
Update QUIC related man7 pages for the added server functionality

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25834)

5 months agoRemove extra FD_SET
Andrew Dinh [Thu, 17 Oct 2024 19:48:17 +0000 (12:48 -0700)] 
Remove extra FD_SET

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25532)

5 months agoAdd a guide for demo QUIC non-blocking server
Andrew Dinh [Mon, 16 Sep 2024 18:59:23 +0000 (02:59 +0800)] 
Add a guide for demo QUIC non-blocking server

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25532)

5 months agoSSL_poll(): Handle blocking with no poll items
Tomas Mraz [Mon, 14 Oct 2024 11:26:07 +0000 (13:26 +0200)] 
SSL_poll(): Handle blocking with no poll items

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agopoll_builder.c: Minor fixes and optimizations
Tomas Mraz [Thu, 10 Oct 2024 13:49:29 +0000 (15:49 +0200)] 
poll_builder.c: Minor fixes and optimizations

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoAdd quic_lock() calls for functions called from poll_translate_ssl_quic()
Tomas Mraz [Wed, 11 Sep 2024 14:02:50 +0000 (16:02 +0200)] 
Add quic_lock() calls for functions called from poll_translate_ssl_quic()

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoEnsure WSAStartup() before calling WSASocketA()
Tomas Mraz [Wed, 11 Sep 2024 09:45:10 +0000 (11:45 +0200)] 
Ensure WSAStartup() before calling WSASocketA()

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoossl_rio_notifier_init(): Add error messages
Tomas Mraz [Tue, 10 Sep 2024 17:11:56 +0000 (19:11 +0200)] 
ossl_rio_notifier_init(): Add error messages

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoSSL_poll(): Report result_count for failed events
Tomas Mraz [Tue, 10 Sep 2024 07:10:53 +0000 (09:10 +0200)] 
SSL_poll(): Report result_count for failed events

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoQUIC: Immediate-Mode Polling various fixups
Tomas Mraz [Tue, 10 Sep 2024 06:53:20 +0000 (08:53 +0200)] 
QUIC: Immediate-Mode Polling various fixups

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoQUIC: Update SSL_poll documentation
Hugo Landau [Mon, 13 May 2024 19:20:23 +0000 (20:20 +0100)] 
QUIC: Update SSL_poll documentation

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoQUIC: Glossary updates
Hugo Landau [Mon, 13 May 2024 19:20:23 +0000 (20:20 +0100)] 
QUIC: Glossary updates

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoQUIC RADIX: Use enhanced blocking support when testing
Hugo Landau [Mon, 13 May 2024 19:20:23 +0000 (20:20 +0100)] 
QUIC RADIX: Use enhanced blocking support when testing

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoQUIC RADIX: Test listener polling support
Hugo Landau [Mon, 13 May 2024 19:20:23 +0000 (20:20 +0100)] 
QUIC RADIX: Test listener polling support

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoQUIC RADIX: Test new SSL_poll functionality
Hugo Landau [Mon, 13 May 2024 19:20:23 +0000 (20:20 +0100)] 
QUIC RADIX: Test new SSL_poll functionality

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoQUIC MULTISTREAM TEST: Remove test that blocking SSL_poll doesn't work
Hugo Landau [Mon, 13 May 2024 19:20:23 +0000 (20:20 +0100)] 
QUIC MULTISTREAM TEST: Remove test that blocking SSL_poll doesn't work

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoRIO: Amend SSL_poll code to correctly register blocking operations for inter-thread...
Hugo Landau [Mon, 13 May 2024 19:20:23 +0000 (20:20 +0100)] 
RIO: Amend SSL_poll code to correctly register blocking operations for inter-thread notification

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoQUIC POLLING: Add support for polling listeners
Hugo Landau [Mon, 13 May 2024 19:20:23 +0000 (20:20 +0100)] 
QUIC POLLING: Add support for polling listeners

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoRIO: Amend SSL_poll to support blocking on QUIC objects
Hugo Landau [Mon, 13 May 2024 19:20:23 +0000 (20:20 +0100)] 
RIO: Amend SSL_poll to support blocking on QUIC objects

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoRIO: Add poll builder to support immediate-mode polling API
Hugo Landau [Mon, 13 May 2024 19:20:23 +0000 (20:20 +0100)] 
RIO: Add poll builder to support immediate-mode polling API

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoQUIC APL: Add support for registering blocking operations to support polling code
Hugo Landau [Mon, 13 May 2024 19:20:23 +0000 (20:20 +0100)] 
QUIC APL: Add support for registering blocking operations to support polling code

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)

5 months agoQUIC REACTOR: Add utility for tracking recursive blocking operations
Hugo Landau [Mon, 13 May 2024 19:20:23 +0000 (20:20 +0100)] 
QUIC REACTOR: Add utility for tracking recursive blocking operations

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25416)