> -----Original Message----- > From: Stefan Eissing [mailto:stefan.eiss...@greenbytes.de] > Sent: vrijdag 11 december 2015 10:20 > To: dev@httpd.apache.org > Subject: Re: Upgrade Summary
> Regarding request bodies: > - websocket will never switch on request bodies > - h2c currently does not, but clients like serf (and curl) really would prefer it to > - TLS could switch with arbitrary request bodies, but maybe need not to > Protocol implementations should make up their minds in the "propose" phase, I > think, > because once a protocol gets selected, the upgrade *should* succeed unless > the > connection catches fire or something. Not upgrading is better than failing. +1 Not upgrading is 100% better than failing. But for Subversion not upgrading will most likely also imply not retrying later on the same connection. The way Subversion uses requests implies that it needs to pipeline requests. With h2 it can do this much more efficient and stable than with http/1.1, but not pipelining will make operations to remote repositories unusable slow. (And I think most of us at least sometimes use the ASF master repository from a distance:-) So once we get past that initial request on an operation like update, checkout or merge we will start opening multiple http/1.1 connections and pipelining requests on those connections without further upgrade headers. With requests leaving and responses arriving out of sync there is no way to upgrade later on. One other thing that sticks in my mind: Is it possible to upgrade to TLS in one request and to h2c later? (The other direction is explicitly forbidden by h2) I'm not going to implement this for the pipelining reasons noted above, but perhaps other scenarios might want this. But more likely we might want to explicitly block this scenario. TLS and then websockets... I don't think that scenario should be supported either. Webbrowsers aren't going to use it... and dedicated clients probably use a direct connection of some sort instead of websockets. Bert