curl/lib/vquic
Neil Horman 957eb240ed
osslq: use SSL_poll to determine writeability of QUIC streams
This discussion:
https://github.com/openssl/openssl/discussions/23339#discussion-6094341

Specifically item number 2 (Send Blocking) was raised by the curl team,
noting that SSL_want_write returning false was not a good indicator of
when a stream is writeable. The suggestion in that discussion was to use
SSL_poll with an SSL_POLL_EVENT_W flag instead, as that is a proper
indication of when an SSL_object will allow writing without blocking.

While ssl_want_write updates its state based on the last error
encountered (implying a need to retry an operation to update the
last_error state again), SSL_poll checks stream buffer status during the
call, giving it more up to date information on request. This is the
method used by our guide demos (quic-hq-interop specifically), and it
works well.

This change has been run through the curl test suite, and shown to pass
all tests. However, given the initial problem description I'm not sure
if there is a test case that explicitly checks for blocking and
unblocking of streams. As such some additional testing may be warranted.

Closes #15909
2025-01-08 23:52:49 +01:00
..
.checksrc lib: enable strerror and strncpy checksrc warnings in subdirs 2024-09-09 16:51:21 +02:00
curl_msh3.c cf-socket: error if address can't be copied 2024-12-22 03:12:35 -05:00
curl_msh3.h quic: rename vquic implementations, fix for quiche build. 2023-01-05 23:39:49 +01:00
curl_ngtcp2.c vtls: feature ssls-export for SSL session im-/export 2025-01-08 23:32:07 +01:00
curl_ngtcp2.h ngtcp2: adjust config and code checks for ngtcp2 without nghttp3 2023-03-23 15:39:13 +01:00
curl_osslq.c osslq: use SSL_poll to determine writeability of QUIC streams 2025-01-08 23:52:49 +01:00
curl_osslq.h http3: initial support for OpenSSL 3.2 QUIC stack 2024-01-22 16:15:45 +01:00
curl_quiche.c QUIC: 0RTT for gnutls via CURLSSLOPT_EARLYDATA 2024-12-23 17:07:15 +01:00
curl_quiche.h quic: rename vquic implementations, fix for quiche build. 2023-01-05 23:39:49 +01:00
vquic_int.h lib: merge ENABLE_QUIC C macro into USE_HTTP3 2024-04-13 08:33:27 +00:00
vquic-tls.c QUIC: 0RTT for gnutls via CURLSSLOPT_EARLYDATA 2024-12-23 17:07:15 +01:00
vquic-tls.h QUIC: 0RTT for gnutls via CURLSSLOPT_EARLYDATA 2024-12-23 17:07:15 +01:00
vquic.c vquic: make vquic_send_packets not return without setting psent 2024-12-23 08:29:52 +01:00
vquic.h lib: merge ENABLE_QUIC C macro into USE_HTTP3 2024-04-13 08:33:27 +00:00