vquic: drop support for OpenSSL-QUIC

- It is slower and uses more memory than the alternatives and is only
  experimental in curl.
- We disable a few tests for OpenSSL-QUIC because of flakiness
- It gets little attention from OpenSSL and we have no expectation of the
  major flaws getting corrected anytime soon.
- No one has spoken up for keeping it
- curl users building with vanilla OpenSSL can still use QUIC through the
  means of ngtcp2

Closes #20226
This commit is contained in:
Daniel Stenberg 2026-01-17 22:49:28 +01:00
parent 6c31df453b
commit 6aaac9dd38
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
22 changed files with 17 additions and 2719 deletions

View file

@ -16,21 +16,6 @@ how your use case cannot be satisfied properly using a workaround.
In March 2026, we drop support for all c-ares versions before 1.16.0.
## OpenSSL-QUIC
OpenSSL-QUIC is what we call the curl QUIC backend that uses the OpenSSL QUIC
stack.
- It is slower and uses more memory than the alternatives and is only
experimental in curl.
- It gets little attention from OpenSSL and we have no expectation of the
major flaws getting corrected anytime soon.
- No one has spoken up for keeping it
- curl users building with vanilla OpenSSL can still use QUIC through the
means of ngtcp2
We remove the OpenSSL-QUIC backend in January 2026.
## RTMP
RTMP in curl is powered by the 3rd party library librtmp.
@ -71,3 +56,4 @@ CMake 3.18 was released on 2020-07-15.
- Support for Visual Studio 2008 (removed in 8.18.0)
- OpenSSL 1.1.1 and older (removed in 8.18.0)
- Support for Windows XP (removed in 8.19.0)
- OpenSSL-QUIC (removed in 8.19.0)

View file

@ -250,54 +250,6 @@ Build curl:
If `make install` results in `Permission denied` error, you need to prepend
it with `sudo`.
# OpenSSL version
QUIC support is **EXPERIMENTAL**
Use OpenSSL 3.3.1 or newer (QUIC support was added in 3.3.0, with
shortcomings on some platforms like macOS). 3.4.1 or newer is recommended.
Build via:
% cd ..
% git clone -b $OPENSSL_VERSION https://github.com/openssl/openssl
% cd openssl
% ./config enable-tls1_3 --prefix=<somewhere> --libdir=lib
% make
% make install
Build nghttp3:
% cd ..
% git clone -b $NGHTTP3_VERSION https://github.com/ngtcp2/nghttp3
% cd nghttp3
% git submodule update --init
% autoreconf -fi
% ./configure --prefix=<somewhere2> --enable-lib-only
% make
% make install
Build curl:
% cd ..
% git clone https://github.com/curl/curl
% cd curl
% autoreconf -fi
% LDFLAGS="-Wl,-rpath,<somewhere>/lib" ./configure --with-openssl=<somewhere> --with-openssl-quic --with-nghttp3=<somewhere2>
% make
% make install
You can build curl with cmake:
% cd ..
% git clone https://github.com/curl/curl
% cd curl
% cmake -B bld -DCURL_USE_OPENSSL=ON -DUSE_OPENSSL_QUIC=ON
% cmake --build bld
% cmake --install bld
If `make install` results in `Permission denied` error, you need to prepend
it with `sudo`.
# `--http3`
Use only HTTP/3:

View file

@ -275,7 +275,6 @@ target_link_libraries(my_target PRIVATE CURL::libcurl)
- `ENABLE_UNIX_SOCKETS`: Enable Unix domain sockets support. Default: `ON`
- `USE_ECH`: Enable ECH support. Default: `OFF`
- `USE_HTTPSRR`: Enable HTTPS RR support. Default: `OFF`
- `USE_OPENSSL_QUIC`: Use OpenSSL and nghttp3 libraries for HTTP/3 support. Default: `OFF`
- `USE_SSLS_EXPORT`: Enable experimental SSL session import/export. Default: `OFF`
## Disabling features