Get the negotiated protocol to support WebTransport#3466
Get the negotiated protocol to support WebTransport#3466jesup wants to merge 1 commit intousers/jesup/drainingfrom
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds support for capturing and exposing the negotiated WebTransport subprotocol (from the server’s wt-protocol response header) so callers can query it by session ID.
Changes:
- Add plumbing to store a negotiated protocol on WebTransport sessions and expose it via a new
Http3Client::webtransport_session_protocol()API. - Parse
wt-protocolfrom extended CONNECT response headers and store it on the session protocol handler. - Extend server-side session acceptance to optionally include extra response headers (used by new WebTransport protocol tests).
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| neqo-http3/src/lib.rs | Adds a default session_protocol() hook on the internal Stream trait. |
| neqo-http3/src/features/extended_connect/webtransport_session.rs | Stores negotiated protocol on WebTransport session protocol object and exposes getter/setter via Protocol. |
| neqo-http3/src/features/extended_connect/session.rs | Extracts wt-protocol from response headers and wires protocol value into the session’s protocol handler; exposes it via Stream::session_protocol(). |
| neqo-http3/src/connection_client.rs | Adds public client API to retrieve negotiated protocol by session ID. |
| neqo-http3/src/connection.rs | Adds SessionAcceptAction::AcceptWith to include extra response headers; adds internal getter for session protocol. |
| neqo-http3/src/features/extended_connect/tests/webtransport/sessions.rs | Adds tests for wt-protocol parsing/availability. |
66d783f to
798edf9
Compare
c2bb439 to
58be5ff
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## users/jesup/draining #3466 +/- ##
=====================================================
Coverage 94.38% 94.39%
=====================================================
Files 133 133
Lines 40275 40323 +48
Branches 40275 40323 +48
=====================================================
+ Hits 38015 38063 +48
+ Misses 1408 1406 -2
- Partials 852 854 +2
Flags with carried forward coverage won't be shown. Click here to find out more.
|
mxinden
left a comment
There was a problem hiding this comment.
Two comments, otherwise looks good to me.
496a483 to
1f45777
Compare
58be5ff to
c140eef
Compare
|
This PR is part of a stack of 13 bookmarks:
Created with jj-stack |
Benchmark resultsSignificant performance differences relative to 1f45777. transfer/1-conn/1-100mb-resp (aka. Download): 💚 Performance has improved by -2.0516%. time: [208.27 ms 208.62 ms 209.03 ms]
thrpt: [478.39 MiB/s 479.35 MiB/s 480.15 MiB/s]
change:
time: [-2.2902% -2.0516% -1.8075] (p = 0.00 < 0.05)
thrpt: [+1.8407% +2.0946% +2.3439]
Performance has improved.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severetransfer/1-conn/1-100mb-req (aka. Upload): 💚 Performance has improved by -2.2296%. time: [208.97 ms 209.31 ms 209.66 ms]
thrpt: [476.97 MiB/s 477.76 MiB/s 478.53 MiB/s]
change:
time: [-2.4881% -2.2296% -1.9890] (p = 0.00 < 0.05)
thrpt: [+2.0293% +2.2804% +2.5515]
Performance has improved.
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mildAll resultstransfer/1-conn/1-100mb-resp (aka. Download): 💚 Performance has improved by -2.0516%. time: [208.27 ms 208.62 ms 209.03 ms]
thrpt: [478.39 MiB/s 479.35 MiB/s 480.15 MiB/s]
change:
time: [-2.2902% -2.0516% -1.8075] (p = 0.00 < 0.05)
thrpt: [+1.8407% +2.0946% +2.3439]
Performance has improved.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severetransfer/1-conn/10_000-parallel-1b-resp (aka. RPS): Change within noise threshold. time: [284.94 ms 286.77 ms 288.62 ms]
thrpt: [34.648 Kelem/s 34.871 Kelem/s 35.095 Kelem/s]
change:
time: [-1.9836% -1.1782% -0.3502] (p = 0.01 < 0.05)
thrpt: [+0.3514% +1.1922% +2.0237]
Change within noise threshold.
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low mild
2 (2.00%) high mildtransfer/1-conn/1-1b-resp (aka. HPS): Change within noise threshold. time: [38.424 ms 38.548 ms 38.690 ms]
thrpt: [25.847 B/s 25.941 B/s 26.025 B/s]
change:
time: [-1.1590% -0.5873% -0.0403] (p = 0.04 < 0.05)
thrpt: [+0.0403% +0.5908% +1.1726]
Change within noise threshold.
Found 5 outliers among 100 measurements (5.00%)
1 (1.00%) high mild
4 (4.00%) high severetransfer/1-conn/1-100mb-req (aka. Upload): 💚 Performance has improved by -2.2296%. time: [208.97 ms 209.31 ms 209.66 ms]
thrpt: [476.97 MiB/s 477.76 MiB/s 478.53 MiB/s]
change:
time: [-2.4881% -2.2296% -1.9890] (p = 0.00 < 0.05)
thrpt: [+2.0293% +2.2804% +2.5515]
Performance has improved.
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mildstreams/walltime/1-streams/each-1000-bytes: Change within noise threshold. time: [582.86 µs 583.41 µs 584.35 µs]
change: [-1.4507% -1.0633% -0.6964] (p = 0.00 < 0.05)
Change within noise threshold.
Found 5 outliers among 100 measurements (5.00%)
4 (4.00%) high mild
1 (1.00%) high severestreams/walltime/1000-streams/each-1-bytes: No change in performance detected. time: [12.313 ms 12.332 ms 12.351 ms]
change: [-0.1599% +0.0504% +0.2605] (p = 0.64 > 0.05)
No change in performance detected.streams/walltime/1000-streams/each-1000-bytes: No change in performance detected. time: [45.067 ms 45.113 ms 45.160 ms]
change: [-0.1333% +0.0099% +0.1643] (p = 0.90 > 0.05)
No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mildtransfer/walltime/pacing-false/varying-seeds: Change within noise threshold. time: [23.129 ms 23.153 ms 23.182 ms]
change: [+0.3446% +0.4837% +0.6453] (p = 0.00 < 0.05)
Change within noise threshold.
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low mild
1 (1.00%) high mild
1 (1.00%) high severetransfer/walltime/pacing-true/varying-seeds: No change in performance detected. time: [23.341 ms 23.360 ms 23.381 ms]
change: [-0.1377% -0.0299% +0.0816] (p = 0.59 > 0.05)
No change in performance detected.
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severetransfer/walltime/pacing-false/same-seed: Change within noise threshold. time: [23.107 ms 23.131 ms 23.164 ms]
change: [+0.5014% +0.6298% +0.7997] (p = 0.00 < 0.05)
Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) low mild
1 (1.00%) high severetransfer/walltime/pacing-true/same-seed: Change within noise threshold. time: [23.781 ms 23.803 ms 23.827 ms]
change: [+1.6894% +1.8046% +1.9336] (p = 0.00 < 0.05)
Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severeDownload data for |
Failed Interop TestsQUIC Interop Runner, client vs. server, differences relative to
All resultsSucceeded Interop TestsQUIC Interop Runner, client vs. server neqo-pr as client
neqo-pr as server
Unsupported Interop TestsQUIC Interop Runner, client vs. server neqo-pr as client
neqo-pr as server
|
Client/server transfer resultsPerformance differences relative to 1f45777. Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.
Table above only shows statistically significant changes. See all results below. All resultsTransfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.
Download data for |
1f45777 to
dd2d0c1
Compare
c140eef to
723a367
Compare
No description provided.