Skip to content

vquic: drop support for OpenSSL-QUIC - #20226

Closed
bagder wants to merge 1 commit into
masterfrom
bagder/rm-openssl-quic
Closed

bagder wants to merge 1 commit into
masterfrom
bagder/rm-openssl-quic

Conversation

@bagder

@bagder bagder commented Jan 9, 2026

Copy link
Copy Markdown
Member
  • 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

@bagder bagder added the HTTP/3 h3 or quic related label Jan 9, 2026
@github-actions github-actions Bot added tests CI Continuous Integration labels Jan 9, 2026
@bagder bagder added the feature-window A merge of this requires an open feature window label Jan 9, 2026
@bagder
bagder marked this pull request as ready for review January 9, 2026 09:34
@bagder
bagder requested a review from Copilot January 9, 2026 09:34

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request removes support for OpenSSL-QUIC from curl. OpenSSL-QUIC was an experimental HTTP/3 backend that used OpenSSL's QUIC implementation. The removal is justified due to performance issues, high memory usage, lack of attention from OpenSSL maintainers, and the availability of better alternatives like ngtcp2.

Key Changes:

  • Removes 2509 lines of OpenSSL-QUIC implementation code (curl_osslq.c and curl_osslq.h)
  • Removes all build system support (CMake, autotools) for --with-openssl-quic option
  • Removes OpenSSL-QUIC specific test skips (tests are now expected to run with alternative QUIC implementations)
  • Updates documentation to remove OpenSSL-QUIC build instructions and marks it as removed in deprecation documentation
  • Updates CI workflows to remove OpenSSL-QUIC specific builds

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated no comments.

Show a summary per file
File Description
lib/vquic/curl_osslq.c Entire OpenSSL-QUIC implementation file removed (2458 lines)
lib/vquic/curl_osslq.h Header file for OpenSSL-QUIC removed (51 lines)
lib/vquic/vquic.c Removed OpenSSL-QUIC include and version/factory function calls
lib/vtls/openssl.c Removed USE_OPENSSL_QUIC conditional compilation block
lib/Makefile.inc Removed curl_osslq.c and curl_osslq.h from build sources
lib/curl_config-cmake.h.in Removed USE_OPENSSL_QUIC CMake define
m4/curl-openssl.m4 Removed OpenSSL QUIC capability detection code
configure.ac Removed --with-openssl-quic option and related configuration logic
CMakeLists.txt Removed USE_OPENSSL_QUIC option and related checks
tests/http/testenv/curl.py Removed outdated comment about OpenSSL-QUIC connect time issue
tests/http/test_*.py Removed OpenSSL-QUIC specific test skip conditions (5 files)
docs/HTTP3.md Removed OpenSSL-QUIC build instructions section (54 lines)
docs/INSTALL-CMAKE.md Removed USE_OPENSSL_QUIC documentation
docs/DEPRECATE.md Moved OpenSSL-QUIC from planned removal to removed list
.github/workflows/windows.yml Removed --with-openssl-quic from test configuration
.github/workflows/macos.yml Removed -DUSE_OPENSSL_QUIC=ON from test configurations (3 instances)
.github/workflows/http3-linux.yml Removed openssl-quic test job entries (2 variants)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@bagder

bagder commented Jan 9, 2026

Copy link
Copy Markdown
Member Author

augment review

@augmentcode

augmentcode Bot commented Jan 9, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR removes curl’s experimental OpenSSL-QUIC (OpenSSL’s built-in QUIC stack) HTTP/3 backend due to higher resource usage, poorer performance, flakiness, and low upstream maintenance.

Changes:

  • Removes the OpenSSL-QUIC implementation (lib/vquic/curl_osslq.c/.h) from the source tree/build.
  • Drops CMake and autotools toggles/flags for it (e.g., `USE_OPENSSL_QUIC`, `--with-openssl-quic`).
  • Updates CI workflows to stop building/testing OpenSSL-QUIC variants on Linux/macOS/Windows.
  • Updates docs to remove OpenSSL-QUIC build instructions and record the backend as removed.
  • Removes OpenSSL-QUIC-specific test skips that existed due to backend flakiness.

Technical Notes: Users building with “vanilla” OpenSSL can still use HTTP/3 via the ngtcp2+nghttp3 backend.

🤖 Was this summary useful? React with 👍 or 👎

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 1 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

Comment thread docs/DEPRECATE.md
@bagder
bagder force-pushed the bagder/rm-openssl-quic branch from 7f06567 to 35e7401 Compare January 14, 2026 22:37
- 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
@bagder
bagder force-pushed the bagder/rm-openssl-quic branch from 35e7401 to 6aaac9d Compare January 17, 2026 21:49
@bagder bagder closed this in 6aaac9d Jan 17, 2026
@bagder
bagder deleted the bagder/rm-openssl-quic branch January 17, 2026 22:06
travislee89 added a commit to stunnel/static-curl that referenced this pull request Mar 11, 2026
curl 8.19.0 drops support for OpenSSL-QUIC
curl/curl#20226
travislee89 added a commit to stunnel/static-curl that referenced this pull request Mar 11, 2026
curl 8.19.0 drops support for OpenSSL-QUIC
curl/curl#20226
travislee89 added a commit to stunnel/static-curl that referenced this pull request Mar 11, 2026
curl 8.19.0 drops support for OpenSSL-QUIC
curl/curl#20226
travislee89 added a commit to stunnel/static-curl that referenced this pull request Mar 11, 2026
curl 8.19.0 drops support for OpenSSL-QUIC
curl/curl#20226
whrvt pushed a commit to whrvt/static-curl that referenced this pull request Mar 25, 2026
curl 8.19.0 drops support for OpenSSL-QUIC
curl/curl#20226
vszakats added a commit to vszakats/curl that referenced this pull request Apr 5, 2026
vszakats added a commit that referenced this pull request Apr 5, 2026
vszakats added a commit that referenced this pull request May 28, 2026
Also:
- GHA/http3-linux: enable deprecated APIs in openssl-prev local
  OpenSSL builds. Required by h2o and its vendored dependencies.
  Tried OpenSSL 4, LibreSSL 4.x, BoringSSL: all failed at one point.
- GHA/http3-linux: build h2o from source.
  libuv1-dev may not be stricly required.
  Tried installing libwslay-dev, but it wasn't recognized.
  Also disable building h2o libs for a much smaller dist directory and
  slightly faster build.
  Sadly, h2o is not versioned, so I pinned to the current latest commit
  at the master branch. It advertises itself as 2.3.0-DEV in pytest.
- drop redundant `libnghttp3` installs. Remains of openssl-quic builds.
  Follow-up to 6aaac9d #20226

Note GHA/macos pytests may or not not be stable with the H3 proxy tests.

Follow-up to e78b1b3 #21153

Closes #21789
outcast36 pushed a commit to greearb/curl that referenced this pull request Jun 3, 2026
outcast36 pushed a commit to greearb/curl that referenced this pull request Jun 3, 2026
Also:
- GHA/http3-linux: enable deprecated APIs in openssl-prev local
  OpenSSL builds. Required by h2o and its vendored dependencies.
  Tried OpenSSL 4, LibreSSL 4.x, BoringSSL: all failed at one point.
- GHA/http3-linux: build h2o from source.
  libuv1-dev may not be stricly required.
  Tried installing libwslay-dev, but it wasn't recognized.
  Also disable building h2o libs for a much smaller dist directory and
  slightly faster build.
  Sadly, h2o is not versioned, so I pinned to the current latest commit
  at the master branch. It advertises itself as 2.3.0-DEV in pytest.
- drop redundant `libnghttp3` installs. Remains of openssl-quic builds.
  Follow-up to 6aaac9d curl#20226

Note GHA/macos pytests may or not not be stable with the H3 proxy tests.

Follow-up to e78b1b3 curl#21153

Closes curl#21789
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI Continuous Integration feature-window A merge of this requires an open feature window HTTP/3 h3 or quic related tests

Development

Successfully merging this pull request may close these issues.

2 participants