Skip to content

HTTP/3 with ngtcp2+wolfssl reports non-zero early data but does not send 0-RTT data #17481

Closed
@eeverett6

Description

@eeverett6

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

Metadata

Metadata

Assignees

Labels

HTTP/3h3 or quic related

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions