Implement application-level protocol negotation at WebTransport session start
Categories
(Core :: Networking, enhancement, P2)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox155 | --- | fixed |
People
(Reporter: jesup, Assigned: jesup, NeedInfo)
References
(Blocks 1 open bug)
Details
(Whiteboard: [necko-triaged], [wptsync upstream])
Attachments
(6 files)
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review | |
|
48 bytes,
text/x-phabricator-request
|
Details | Review |
From the spec: section 6.2 items 14, 15 and 32:
Let protocols be options’s protocols
If any of the values in protocols occur more than once, fail to match the requirements for elements that comprise the value of the negotiated application protocol as defined by the WebTransport protocol, or have an isomorphic encoded length of 0 or exceeding 512, throw a SyntaxError exception. [WEB-TRANSPORT-OVERVIEW] Section 3.1.
If protocols is not empty, set a structured field value with (WT-Available-Protocols, a structured header list whose members are the structured header string items in protocols in order) in request’s header list.
and later in To process a WebTransport fetch response, item 5:
Set transport.[[Protocol]] to either the string value of the negotiated application protocol if present, following [WEB-TRANSPORT-OVERVIEW] Section 3.1, or "" if not present.
and in WebTransportOptions:
protocols, of type sequence<DOMString>, defaulting to []
An optionally provided array of application-level protocol names. Selecting a preferred application-protocol and communicating it to the client is optional for the server. Servers might reject the request if a suitable protocol was not provided.
| Assignee | ||
Comment 1•7 months ago
|
||
Updated•7 months ago
|
Updated•5 months ago
|
| Assignee | ||
Comment 2•5 months ago
|
||
| Assignee | ||
Comment 3•5 months ago
|
||
| Assignee | ||
Comment 4•5 months ago
|
||
| Assignee | ||
Comment 5•5 months ago
|
||
| Assignee | ||
Comment 6•5 months ago
|
||
IPC Layer (PBackground.ipdl) - Added nsString[] aProtocols parameter to CreateWebTransportParent
DOM Layer (WebTransport.cpp) - Extracted protocols from JavaScript API options and passed them through IPC at WebTransport.cpp:260-269, 386-390
Parent Process (BackgroundParentImpl.h/cpp, WebTransportParent.h/cpp) - Updated to receive and forward protocols through the IPC chain
Network Layer (nsIWebTransport.idl, WebTransportSessionProxy.cpp) -
Added protocols parameter to AsyncConnectWithClient interface
Implemented code to format and send wt-available-protocols HTTP header in the correct format: "protocol1", "protocol2", "protocol3"
Updated•5 months ago
|
Backed out for causing build bustages
Backout link
Push with failures
Failure log(s)
Created web-platform-tests PR https://github.com/web-platform-tests/wpt/pull/61598 for changes under testing/web-platform/tests
Comment 10•14 days ago
|
||
Comment 11•14 days ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/716fd77534a8
https://hg.mozilla.org/mozilla-central/rev/d13db66deb44
https://hg.mozilla.org/mozilla-central/rev/698d6499034d
https://hg.mozilla.org/mozilla-central/rev/d7814c57d1f6
https://hg.mozilla.org/mozilla-central/rev/81156b4bbe84
Upstream PR merged by moz-wptsync-bot
Description
•