A dispatcher that exposes a Service[Request, Response]
.
A dispatcher that accepts requests from the upstream remote, serves them through a downstream service, and writes the response back to the upstream remote.
Accept either H2C requests (beginning with a Connection preface) or HTTP requests with h2c protocol upgrading.
Detect connection-headers in accordance with RFC 7540 §8.1.2.2:
Detect connection-headers in accordance with RFC 7540 §8.1.2.2:
HTTP/2 does not use the Connection header field to indicate connection-specific header fields; in this protocol, connection-specific metadata is conveyed by other means. An endpoint MUST NOT generate an HTTP/2 message containing connection-specific header fields; any message containing connection-specific header fields MUST be treated as malformed (Section 8.1.2.6).
The only exception to this is the TE header field, which MAY be present in an HTTP/2 request; when it is, it MUST NOT contain any value other than "trailers".
This means that an intermediary transforming an HTTP/1.x message to HTTP/2 will need to remove any header fields nominated by the Connection header field, along with the Connection header field itself. Such intermediaries SHOULD also remove other connection-specific header fields, such as Keep-Alive, Proxy-Connection, Transfer-Encoding, and Upgrade, even if they are not nominated by the Connection header field.
Based on com.twitter.finagle.http2.Http2Listener
A dispatcher that exposes a
Service[Request, Response]
.Requests are issued onto the dispatcher to be written on a (new) remote stream, and the response is returned and streamed upstream from the remote.