Skip to content

src: gate all quic behind disabled-by-default compile flag #57142

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from

Conversation

jasnell
Copy link
Member

@jasnell jasnell commented Feb 19, 2025

Due to quictls/openssl@93ae85b it is clear that we will need to revert back to using OpenSSL's official releases. This means we will be forced to re-implement at least part of the underlying QUIC implementation to use different crypto APIs. For that reason, this PR disables building any of the QUIC support by default and introduces a new compile time flag.

/cc @mhdawson @ljharb @mcollina @anonrig @Qard @richardlau

@nodejs-github-bot
Copy link
Collaborator

Review requested:

  • @nodejs/gyp

@nodejs-github-bot nodejs-github-bot added build Issues and PRs related to build files or the CI. needs-ci PRs that need a full CI run. tools Issues and PRs related to the tools directory. labels Feb 19, 2025
@nodejs-github-bot

This comment was marked as outdated.

@jasnell jasnell force-pushed the jasnell/quic-sad-face branch from fb75531 to ea2bf13 Compare February 19, 2025 22:02
@nodejs-github-bot

This comment was marked as outdated.

Copy link
Member

@ljharb ljharb left a comment

Choose a reason for hiding this comment

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

can not review the contents, but rubberstamping based on the intentions (please ensure someone has reviewed the contents before landing tho)

Copy link
Member

@mhdawson mhdawson left a comment

Choose a reason for hiding this comment

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

LGTM

@mhdawson mhdawson added the request-ci Add this label to start a Jenkins CI on a PR. label Feb 19, 2025
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Feb 19, 2025
@nodejs-github-bot

This comment was marked as duplicate.

@anonrig anonrig added the fast-track PRs that do not need to wait for 48 hours to land. label Feb 19, 2025
Copy link
Contributor

Fast-track has been requested by @anonrig. Please 👍 to approve.

@jasnell jasnell added author ready PRs that have at least one approval, no pending requests for changes, and a CI started. and removed author ready PRs that have at least one approval, no pending requests for changes, and a CI started. labels Feb 19, 2025
@jasnell jasnell force-pushed the jasnell/quic-sad-face branch 2 times, most recently from fa8cf59 to 95bd1c3 Compare February 19, 2025 23:47
@jasnell
Copy link
Member Author

jasnell commented Feb 19, 2025

Needed to push one additional change to handle the --experimental-quic CLI flag correctly. Without the compile flag it is allowed but a non-op. With the flag it becomes functional.

@nodejs-github-bot

This comment was marked as outdated.

@jasnell jasnell added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Feb 19, 2025
Due to quictls/openssl@93ae85b
it is clear that we will need to revert back to using
OpenSSL's official releases. This means we will be forced
to re-implement at least part of the underlying QUIC
implementation to use different crypto APIs. For that
reason, this PR disables building any of the QUIC support
by default and introduces a new compile time flag.
@jasnell jasnell force-pushed the jasnell/quic-sad-face branch from 95bd1c3 to 029f974 Compare February 20, 2025 00:20
@nodejs-github-bot
Copy link
Collaborator

Copy link

codecov bot commented Feb 20, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 90.37%. Comparing base (f6ce486) to head (029f974).
Report is 373 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #57142      +/-   ##
==========================================
+ Coverage   88.54%   90.37%   +1.83%     
==========================================
  Files         665      628      -37     
  Lines      193408   184007    -9401     
  Branches    36961    35952    -1009     
==========================================
- Hits       171250   166304    -4946     
+ Misses      14795    10869    -3926     
+ Partials     7363     6834     -529     
Files with missing lines Coverage Δ
src/node_options.cc 87.37% <ø> (ø)
src/node_options.h 98.32% <ø> (-0.01%) ⬇️

... and 146 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

aduh95 pushed a commit that referenced this pull request Apr 2, 2025
Change `tools/dep_updaters/update-openssl.sh` to fetch updates from
official OpenSSL.

PR-URL: #57301
Refs: #57142
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
aduh95 pushed a commit that referenced this pull request Apr 3, 2025
Change `tools/dep_updaters/update-openssl.sh` to fetch updates from
official OpenSSL.

PR-URL: #57301
Refs: #57142
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
RafaelGSS pushed a commit to RafaelGSS/node that referenced this pull request Apr 8, 2025
Update the instructions for maintaining OpenSSL in the Node.js source
tree to reflect switching back from the quictls fork of OpenSSL back
to official OpenSSL.

PR-URL: nodejs#57413
Refs: nodejs#57301
Refs: nodejs#57142
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
@RafaelGSS RafaelGSS added the backport-requested-v22.x PRs awaiting manual backport to the v22.x-staging branch. label Apr 11, 2025
@RafaelGSS
Copy link
Member

This commit didn't land cleanly on v22.x-staging. It requires a manual backport, so I'm adding a backport-requested label.

RafaelGSS pushed a commit that referenced this pull request Apr 14, 2025
Update the instructions for maintaining OpenSSL in the Node.js source
tree to reflect switching back from the quictls fork of OpenSSL back
to official OpenSSL.

PR-URL: #57413
Refs: #57301
Refs: #57142
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
RafaelGSS pushed a commit that referenced this pull request Apr 14, 2025
Update the instructions for maintaining OpenSSL in the Node.js source
tree to reflect switching back from the quictls fork of OpenSSL back
to official OpenSSL.

PR-URL: #57413
Refs: #57301
Refs: #57142
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
aduh95 pushed a commit that referenced this pull request Apr 14, 2025
Update the instructions for maintaining OpenSSL in the Node.js source
tree to reflect switching back from the quictls fork of OpenSSL back
to official OpenSSL.

PR-URL: #57413
Refs: #57301
Refs: #57142
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
aduh95 pushed a commit that referenced this pull request Apr 14, 2025
Update the instructions for maintaining OpenSSL in the Node.js source
tree to reflect switching back from the quictls fork of OpenSSL back
to official OpenSSL.

PR-URL: #57413
Refs: #57301
Refs: #57142
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
aduh95 pushed a commit that referenced this pull request Apr 15, 2025
Update the instructions for maintaining OpenSSL in the Node.js source
tree to reflect switching back from the quictls fork of OpenSSL back
to official OpenSSL.

PR-URL: #57413
Refs: #57301
Refs: #57142
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
RafaelGSS pushed a commit that referenced this pull request Apr 16, 2025
Change `tools/dep_updaters/update-openssl.sh` to fetch updates from
official OpenSSL.

PR-URL: #57301
Refs: #57142
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
RafaelGSS pushed a commit that referenced this pull request Apr 16, 2025
Update the instructions for maintaining OpenSSL in the Node.js source
tree to reflect switching back from the quictls fork of OpenSSL back
to official OpenSSL.

PR-URL: #57413
Refs: #57301
Refs: #57142
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
RafaelGSS pushed a commit that referenced this pull request Apr 17, 2025
Change `tools/dep_updaters/update-openssl.sh` to fetch updates from
official OpenSSL.

PR-URL: #57301
Refs: #57142
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
RafaelGSS pushed a commit that referenced this pull request Apr 17, 2025
Update the instructions for maintaining OpenSSL in the Node.js source
tree to reflect switching back from the quictls fork of OpenSSL back
to official OpenSSL.

PR-URL: #57413
Refs: #57301
Refs: #57142
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
RafaelGSS pushed a commit that referenced this pull request May 1, 2025
`parallel/test-config-json-schema` compares to a generated fixture that
assumes that Node.js was built with default configuration settings.

Skip the test if non-default quic is enabled (`configure --with-quic`).

Refs: #57016
Refs: #57142
PR-URL: #57225
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
RafaelGSS pushed a commit that referenced this pull request May 1, 2025
Change `tools/dep_updaters/update-openssl.sh` to fetch updates from
official OpenSSL.

PR-URL: #57301
Refs: #57142
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
RafaelGSS pushed a commit that referenced this pull request May 1, 2025
Update the instructions for maintaining OpenSSL in the Node.js source
tree to reflect switching back from the quictls fork of OpenSSL back
to official OpenSSL.

PR-URL: #57413
Refs: #57301
Refs: #57142
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
RafaelGSS pushed a commit that referenced this pull request May 2, 2025
`parallel/test-config-json-schema` compares to a generated fixture that
assumes that Node.js was built with default configuration settings.

Skip the test if non-default quic is enabled (`configure --with-quic`).

Refs: #57016
Refs: #57142
PR-URL: #57225
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
RafaelGSS pushed a commit that referenced this pull request May 2, 2025
Change `tools/dep_updaters/update-openssl.sh` to fetch updates from
official OpenSSL.

PR-URL: #57301
Refs: #57142
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
RafaelGSS pushed a commit that referenced this pull request May 2, 2025
Update the instructions for maintaining OpenSSL in the Node.js source
tree to reflect switching back from the quictls fork of OpenSSL back
to official OpenSSL.

PR-URL: #57413
Refs: #57301
Refs: #57142
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
aduh95 pushed a commit that referenced this pull request May 6, 2025
`parallel/test-config-json-schema` compares to a generated fixture that
assumes that Node.js was built with default configuration settings.

Skip the test if non-default quic is enabled (`configure --with-quic`).

Refs: #57016
Refs: #57142
PR-URL: #57225
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
aduh95 pushed a commit that referenced this pull request May 6, 2025
`parallel/test-config-json-schema` compares to a generated fixture that
assumes that Node.js was built with default configuration settings.

Skip the test if non-default quic is enabled (`configure --with-quic`).

Refs: #57016
Refs: #57142
PR-URL: #57225
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
RafaelGSS pushed a commit that referenced this pull request May 14, 2025
`parallel/test-config-json-schema` compares to a generated fixture that
assumes that Node.js was built with default configuration settings.

Skip the test if non-default quic is enabled (`configure --with-quic`).

Refs: #57016
Refs: #57142
PR-URL: #57225
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
aduh95 pushed a commit that referenced this pull request May 16, 2025
`parallel/test-config-json-schema` compares to a generated fixture that
assumes that Node.js was built with default configuration settings.

Skip the test if non-default quic is enabled (`configure --with-quic`).

Refs: #57016
Refs: #57142
PR-URL: #57225
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
aduh95 pushed a commit that referenced this pull request May 17, 2025
`parallel/test-config-json-schema` compares to a generated fixture that
assumes that Node.js was built with default configuration settings.

Skip the test if non-default quic is enabled (`configure --with-quic`).

Refs: #57016
Refs: #57142
PR-URL: #57225
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
aduh95 pushed a commit that referenced this pull request May 17, 2025
`parallel/test-config-json-schema` compares to a generated fixture that
assumes that Node.js was built with default configuration settings.

Skip the test if non-default quic is enabled (`configure --with-quic`).

Refs: #57016
Refs: #57142
PR-URL: #57225
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
aduh95 pushed a commit that referenced this pull request May 17, 2025
`parallel/test-config-json-schema` compares to a generated fixture that
assumes that Node.js was built with default configuration settings.

Skip the test if non-default quic is enabled (`configure --with-quic`).

Refs: #57016
Refs: #57142
PR-URL: #57225
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
aduh95 pushed a commit that referenced this pull request May 18, 2025
`parallel/test-config-json-schema` compares to a generated fixture that
assumes that Node.js was built with default configuration settings.

Skip the test if non-default quic is enabled (`configure --with-quic`).

Refs: #57016
Refs: #57142
PR-URL: #57225
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
aduh95 pushed a commit that referenced this pull request May 19, 2025
`parallel/test-config-json-schema` compares to a generated fixture that
assumes that Node.js was built with default configuration settings.

Skip the test if non-default quic is enabled (`configure --with-quic`).

Refs: #57016
Refs: #57142
PR-URL: #57225
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
author ready PRs that have at least one approval, no pending requests for changes, and a CI started. backport-requested-v22.x PRs awaiting manual backport to the v22.x-staging branch. build Issues and PRs related to build files or the CI. fast-track PRs that do not need to wait for 48 hours to land. needs-ci PRs that need a full CI run. tools Issues and PRs related to the tools directory.
Projects
None yet
Development

Successfully merging this pull request may close these issues.