> Am 20.04.2016 um 13:16 schrieb Yann Ylavic <ylavic....@gmail.com>: > > On Wed, Apr 20, 2016 at 1:09 PM, Yann Ylavic <ylavic....@gmail.com> wrote: >> On Wed, Apr 20, 2016 at 11:25 AM, Stefan Eissing >> <stefan.eiss...@greenbytes.de> wrote: >>> Done in r1740075. >>> >>> I was thinking of a nicer solution, but that involved inventing new hooks >>> which seems not worth it. >>> >>> Since this area of protocol negotiation has already been talked about in >>> regard to TLS upgrades >>> and websockets, I do not want to invest in the current way of handling this >>> too much time. >> >> I really don't see why we couldn't upgrade to h2 from "http:" (not >> "https:" since ALPN did not take place already, or would have done >> it). >> ISTM that "Upgrade: h2" could be valid in response to a (plain) HTTP/1 >> request, and the client could upgrade from there... > > More on this and Michael's quote of RFC 7540 ("A server MUST ignore an > "h2" token..."). > An HTTP/2 server must indeed ignore the inner HTTP/1 request's > "Upgrade: h2" header since it's RFC states it, but and HTTP/1 server > (AFAICT) is not concerned by this RFC, and should not...
Totally agree. And, although untested, in principle we would upgrade such a request, as our protocol negotiation framework is somewhat agnostic to which RFC can leak water farther than others. This whole PR came about because NodeJS HTTP client misunderstood the whole Upgrade: header handling of HTTP/1.1. They though that when the client *receives* as response header Upgrade: that they *needed* to change the protocol. With clever carefulness they decided to better not ignore it and fail any response that carries an Upgrade:, irregardless of field value. This has been fixed now, AFAIK. But, as with all software, a lot of installations out there still have it and thus fail when talking to a new Apache. Since RFC 7230 clearly allows Upgrade: in the response, it was argued hat at least "Upgrade: h2" is outside any spec and should go away. If our release reaches potential users faster than the nodejs update, I do not know... This is the story as I see it. Lots of good intentions from all sides, no real leap forward for mankind in this protocol layering mix. -Stefan