Skip to content

Support for the WT_DRAIN_SESSION frame to initiate draining#3476

Open
jesup wants to merge 1 commit intousers/jesup/atomicWritefrom
users/jesup/WT_DRAIN_SESSION
Open

Support for the WT_DRAIN_SESSION frame to initiate draining#3476
jesup wants to merge 1 commit intousers/jesup/atomicWritefrom
users/jesup/WT_DRAIN_SESSION

Conversation

@jesup
Copy link
Copy Markdown
Member

@jesup jesup commented Mar 16, 2026

Support for the WT_DRAIN_SESSION frame to initiate draining for a specific session

Copilot AI review requested due to automatic review settings March 16, 2026 04:57
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds WebTransport support for the WT_DRAIN_SESSION capsule/frame so endpoints can initiate graceful draining of a specific WebTransport session and surface this as an application event.

Changes:

  • Introduces a DrainSession WebTransport frame (WT_DRAIN_SESSION) with encode/decode + frame reader tests.
  • Wires a new “draining” signal through the extended-connect session protocol and event pipelines to client/server application events.
  • Adds test-only helpers and new integration tests covering client↔server draining behavior.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
neqo-http3/src/server_events.rs Adds public WebTransportServerEvent::Draining and event insertion helper.
neqo-http3/src/server_connection_events.rs Adds internal per-connection WebTransportEvent::Draining and emits it from ExtendedConnectEvents.
neqo-http3/src/server.rs Maps connection draining events to public server events; adds test helper to send drain capsule.
neqo-http3/src/frames/wtframe.rs Implements WT_DRAIN_SESSION frame type, encode/decode logic, and unit tests.
neqo-http3/src/frames/tests/reader.rs Refactors CloseSession frame assertions to safer pattern matching.
neqo-http3/src/features/extended_connect/webtransport_session.rs Handles received DrainSession frame by marking session draining and emitting draining events.
neqo-http3/src/features/extended_connect/tests/webtransport/sessions.rs Adds end-to-end tests for client/server drain behavior; updates draft links.
neqo-http3/src/features/extended_connect/mod.rs Extends ExtendedConnectEvents trait with session_draining.
neqo-http3/src/connection_server.rs Adds test-only server handler hook to send a drain capsule.
neqo-http3/src/connection_client.rs Adds test-only client helper to send a drain capsule.
neqo-http3/src/connection.rs Adds test-only connection helper to write WT_DRAIN_SESSION on a session send stream.
neqo-http3/src/client_events.rs Emits Http3ClientEvent::WebTransport(WebTransportEvent::Draining) for session draining.

Comment thread neqo-http3/src/features/extended_connect/webtransport_session.rs Outdated
Comment thread neqo-http3/src/server.rs
Comment thread neqo-http3/src/server_events.rs
Comment thread neqo-http3/src/features/extended_connect/webtransport_session.rs Outdated
Comment thread neqo-http3/src/frames/wtframe.rs Outdated
Comment thread neqo-http3/src/connection.rs Outdated
Comment thread neqo-http3/src/connection_client.rs Outdated
Comment thread neqo-http3/src/connection_client.rs Outdated
@larseggert
Copy link
Copy Markdown
Collaborator

@jesup all of these PRs need to be rebased so CI runs.

@larseggert larseggert added the needs-rebase PR needs rebasing before it can be merged. label Apr 8, 2026
@jesup jesup force-pushed the users/jesup/atomicWrite branch from ce6b89f to 448e75a Compare May 1, 2026 19:06
@jesup
Copy link
Copy Markdown
Member Author

jesup commented May 1, 2026

@jesup jesup mentioned this pull request May 1, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 1, 2026

Failed Interop Tests

None ❓

All results

Succeeded Interop Tests

QUIC Interop Runner, client vs. server

neqo-pr as client

None ❓

neqo-pr as server

None ❓

Unsupported Interop Tests

QUIC Interop Runner, client vs. server

neqo-pr as client

None ❓

neqo-pr as server

None ❓

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

Labels

needs-rebase PR needs rebasing before it can be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants