- From: Amos Jeffries <squid3@treenet.co.nz>
- Date: Sun, 12 Nov 2017 03:17:01 +1300
- To: Kari Hurtta <hurtta-ietf@elmme-mailer.org>, HTTP Working Group <ietf-http-wg@w3.org>
- Cc: HYBI Working Group <hybi@ietf.org>, Patrick McManus <pmcmanus@mozilla.com>
On 11/11/17 22:19, Kari Hurtta wrote: >> SETTINGS ENABLE_UPGRADE (or ENABLE_CONNECT_PROTOCOL) from server >> end of connection to client end of connection tells on that case >> >> that server end of connection understand >> :upgrade >> pseudo header. >> >> It tells nothing about that what is behind of that server end of >> connection. >> >> Only after request is sent, http response tells if that authority >> and path supporting that upgrade. Error is reported as http status code. >> >> I see that reverse proxy can send SETTINGS ENABLE_UPGRADE (or >> ENABLE_CONNECT_PROTOCOL) >> even when it does not konw if next hop supports that. Support >> of next hop or origin server is reported by when that protocol >> is triedm failure is reported on http status code. > > Amos Jeffries <squid3@treenet.co.nz> wrote: > >> A proxy that sends that ENABLE_UPGRADE is guaranteeing that it *will* >> service the upgrade and handle the resulting traffic syntax. By itself >> if necessary. > > I ligthly disagreed. > > ENABLE_UPGRADE just tells that :upgrade is not considered to > be error which causes stream error of type PROTOCOL_ERROR > emitted and tells possible full duplex handling (as was on > :method = CONNECT). > > You can also try Upgrade: on HTTP/1.1 and server or proxy > have permission to ignore it. Upgrade is just suggestion > from client. If ":upgrade" has the same optional nature as Upgrade did there is zero point in creating it. Just use the existing Upgrade header in the HEADERS frame. That does not require any negotiation. The whole point of SETTINGS is to promise the recipient of that frame that the things mentioned in it will work. No maybes or guessing. This guarantee provided by SETTINGS is one of the ways HTTP/2 improves over HTTP/1.1. No more sending maybe-ignored headers and hoping for success a few RTT later. The client can know up front whether that connection is a usable channel for the negotiable feature or not. ... > >> In the general case a proxy that negotiates a SETTING it cannot >> guarantee support for is broken. It must instead negotiate a SETTINGS >> without the feature and re-negotiate with another SETTINGS later when it >> has better information. > > / Kari Hurtta > >
Received on Saturday, 11 November 2017 14:17:35 UTC