Description
I did this
- Built curl with ngtcp2, wolfssl, nghttp3, and --enable-ssls-export
- Made a request to a test HTTP/3 server with SSL sessions
/curl --http3-only --ssl-sessions my-sessions --tls-earlydata -w 'Early: %{tls_earlydata}\n' https://127.0.0.1
- Repeated the request with the SSL session file populated
I then repeated the above with gnutls.
With wolfssl, a packet capture showed that neither connection used 0-RTT data, although tls_earlydata
was 0 the first time and 89 the second time.
With gnutls, the first connection did not use 0-RTT and reported 0 for tls_earlydata
, the second connection did use 0-RTT and reported 89 for tls_earlydata
.
Finally, I tried adding the line
wolfSSL_set_max_early_data(wss->ssl, scs->earlydata_max);
in wssl_setup_session()
, and then I did see curl use 0-RTT data on session reuse when built with wolfssl.
I expected the following
I expected curl to send 0-RTT data when re-using SSL session data for an HTTP/3 connection, or to report a value of 0 for tls_earlydata
.
curl/libcurl version
curl 8.14.1-DEV (x86_64-pc-linux-gnu) libcurl/8.14.1-DEV wolfSSL/5.8.0 libidn2/2.3.7 libpsl/0.21.2 nghttp2/1.66.0-DEV ngtcp2/1.13.0-DEV nghttp3/1.1
Release-Date: [unreleased]
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Largefile NTLM PSL SSL SSLS-EXPORT threadsafe UnixSockets
operating system
Linux 5.15.167.4-microsoft-standard-WSL2 #1 SMP Tue Nov 5 00:21:55 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux