tree 47806b71b00923fec772bd82e73e0ca01b357a2c
parent a4b0172f44b37f5d93420cab1b7363372c759e18
author lucas <lucas@cloudflare.com> 1587048175 +0100
committer Alessandro Ghedini <alessandro@ghedini.me> 1592230820 +0100

h3: initial version of extensible priority scheme

This builds on top of the QUIC-level priority support.

This change adds a new method `send_response_with_priority()`to
the HTTP/3 API. This takes a `priority` argument, a string that
contains the Extensible Priority header field value formatted
as Structured Headers e.g. "u=2, i". The contents of `priority`
is used for scheduling when sending response body bytes with
`send_body`.

The Extensible Priority scheme defines the defaults u=3 and i=?0.
Providing an empty value for `priority` will cause the defaults
to be used. The existing method `send_response()` has been updated
to send responses using defaults.

At this time, once a response is initiated it's priority cannot
changed.

No new API method is provided for clients to set request priority.
Clients can provide the `Priority` HTTP header in the `Headers`
argument of the `send_request()` method. This will be passed through
unmodified.

The quiche-client and quiche-server applications have been updated
to test this out. quiche-client can be run with e.g.
`-H "Priority:u=4,i"` to send a priority signal. quiche-server
process the Priority header (or assumes the default if none is
provided). It also supports a special query string syntax that
takes precedence over the header. For example, a client can send
`https://example.com?u=4&i=1` to indicate the priority as `u=1,i`.

Co-authored-by: Alessandro Ghedini <alessandro@ghedini.me>
