There are three things to address, one core related and one HTTP/2 related:

1. The whole discussion arose, because there are clients that seriously choke on
   *any* Upgrade: response header. No matter what tokens it contains. Those 
*can* now
   be addressed via mod_header with a "Header unset Upgrade" directive.
   Since Upgrade: is a core feature, it should maybe better be a core 
directive, such as

     ProtocolsHttpUpgradeAnnounce on|off         # make no announce in a 
response header
     ProtocolsHttpUpgrade on|off                 # make no http Upgrade: at all

2. What kind of HTTP/1.1 Upgrade: paths we want to implement.
   - 'h2c' on a cleartext connection, I assume, is desired
   - 'h2' on a cleartext connection, I do not see a use case for. Same as 
'TLS/1.x, HTTP/2'. It might be interesting to debate which is more according to 
which spec, but I do not plan to participate in that.
   - 'h2' on a TLS connection. This is currently supported, configured off by 
default. So we do conform to RFC7540, but one can configure a TLS HTTP/1.1 -> 
HTTP/2 upgrade path if one so desires.

As to the discussion of 'HTTP/2' or 'HTTP/2.0' vs. 'h2' on TLS connections, we 
could also decide to support that. I am +-0 on this. I think 'h2' is 
immediately clear to anyone that has read RFC7540 at least once. Regardless of 
it being only registered for ALPN.

3. The whole 'TLS/x.x, other-id' upgrade dance on cleartext connections has 
been discussed months ago. We should discuss how we address this in the core 
protocols_propose/switch API that has been marked experimental and needs to be 
re-visited after the experiences of the last months. Also, the requirements 
from Jacob in regard to WebSocket Upgrade should be factored in.

-Stefan


> Am 16.06.2016 um 00:32 schrieb Jacob Champion <[email protected]>:
> 
> On 06/15/2016 01:32 PM, William A Rowe Jr wrote:
>> It seems to me that we -can- implement
>> Connection: Upgrade
>> Upgrade: h2
>> on a plaintext connection, which is simply shorthand for Upgrade:
>> TLS/1.x, HTTP/2
>> where the TLS connection *must* handshake with the ALPN token 'h2' (the 102
>> Switching Protocols would be followed by a TLS HELO), and that
>> restricted set
>> of TLS protocols and ciphers acceptable to the HTTP/2 protocol.
> 
> It may be *allowed* (I'm still mulling it over in my head; it seems to me to 
> be a substantial stretching of the spirit of the Upgrade dance)... but I 
> would seriously hope that httpd *doesn't* decide to do this. At least not 
> without a really good client use case first. Additional fragmentation of the 
> handshake types increases complexity and attack surface.
> 
> I am very curious about Roy's assertion (AIUI) that the 'HTTP/2.0' upgrade 
> token is implicitly defined by the existence of RFC 7540. What are its 
> semantics? Are they equivalent to those of the 'h2c' token?
> 
> (I understand that RFC 7230 *registers* all tokens of the form 'HTTP/m.n'. 
> That is different to me than saying, "If someone in the future creates an RFC 
> called HTTPv4, all 'HTTP/4.x' tokens are automatically defined by that 
> specification, whether they know it or not.")
> 
> --Jacob

Reply via email to