diff --git a/fetch.bs b/fetch.bs index 54b6fe5b1..9cf7ace3d 100644 --- a/fetch.bs +++ b/fetch.bs @@ -89,6 +89,24 @@ url:https://tools.ietf.org/html/draft-ietf-httpbis-header-structure#section-4.2; "href": "https://tools.ietf.org/html/draft-ietf-httpbis-header-structure", "publisher": "IETF", "title": "Structured Field Values for HTTP" + }, + "HTTP3": { + "authors": ["M. Bishop, Ed."], + "href": "https://tools.ietf.org/html/draft-ietf-quic-http", + "publisher": "IETF", + "title": "Hypertext Transfer Protocol Version 3 (HTTP/3)" + }, + "WEBTRANSPORT-HTTP3": { + "authors": ["V. Vasiliev"], + "href": "https://tools.ietf.org/html/draft-ietf-webtrans-http3", + "publisher": "IETF", + "title": "WebTransport over HTTP/3" + }, + "HTTP3-DATAGRAM": { + "authors": ["David Schinazi", "Lucas Pardue"], + "href": "https://tools.ietf.org/html/draft-ietf-masque-h3-datagram", + "publisher": "IETF", + "title": "Using QUIC Datagrams with HTTP/3" } } @@ -2121,12 +2139,27 @@ identified by a key (a network partition key), an origin (a origin), and credentials (a boolean).
To obtain a connection, given a key, -origin, and credentials, run these steps: +origin, credentials, an optional boolean +http3Only (default: false), and an optional +boolean dedicated (default: false), run these +steps: +
If the user agent's connection pool contains a connection whose key is - key, origin is origin, and credentials is - credentials, then return that connection. +
If dedicated is false, then: + +
Let connections be a set of connections in the user agent's + connection pool each of whose key is key, origin is + origin, and credentials is credentials. + +
If connections is not empty and http3Only is false, then return + one of connections. + +
If there is an HTTP/3 connection in connections, then return that + connection. +
Let connection be null. @@ -2139,6 +2172,12 @@ identified by a key (a network partition key), an origin (a origin. [[!HTTP]] [[!HTTP-SEMANTICS]] [[!HTTP-COND]] [[!HTTP-CACHING]] [[!HTTP-AUTH]] [[!TLS]] +
If http3Only is true, then establish an HTTP/3 connection. [[!HTTP3]] + +
When establishing an HTTP/3 connection, include SETTINGS_ENABLE_WEBTRANSPORT with a value of + 1 and H3_DATAGRAM with a value of 1 in the initial SETTINGS frame. [[!WEBTRANSPORT-HTTP3]] + [[!HTTP3-DATAGRAM]] +
If credentials is false, then do not send a TLS client certificate.
If establishing a connection does not succeed (e.g., a DNS, TCP, or TLS error), then return @@ -2154,9 +2193,9 @@ identified by a key (a network partition key), an origin (a
Return failure.
Add connection to the user agent's connection pool with key being - key, origin being origin, and credentials being - credentials. +
If dedicated is false, then add connection to the user agent's + connection pool with key being key, origin being origin, + and credentials being credentials.
Return connection.