Subject: HTTP/2 : problem with section 3.5 Connection setup magic

From: Amos Jeffries <[email-masked]>
Date: Tue, 16 Jul 2013 01:01:18 +1200

I am attempting to implement the magic from section 3.5 and run into a 
bit of potential trouble.

In section 3.5 clients are required to send an explicit set of 24 magic 
octets, which happens to include the string "HTTP/2.0" as a fake HTTP/1 
request. This clashes somewhat with the temporary requirements in 
section 3.1 where experimental implementations are required to emit the 
version identifier "HTTP-draft-04/2.0" in places interpreted by other 
protocols such as this magic when seen by 1.1 servers. It is unclear 
whether we are to send the magic octets *exactly* as defined in their 
opaque blob form, or whether we send magic octets adjusted with the 
draft-specific temporary string.

It would seem we are intended to treat that magic as an opaque blob to 
be sent. But that removes a good chance for early implementations to 
determine which draft framing is about to arrive.

I think this particular section 3.5 needs a second explicit note to the 
effect that the opaque blob should be adjusted for the draft-specific 
identifier.

Amos Jeffries

---

From: Martin Thomson <[email-masked]>
Date: Mon, 15 Jul 2013 09:51:10 -0700

> effect that the opaque blob should be adjusted for the draft-specific

The intent was always the precise opposite here.  That magic string
isn't a string, it's just a sequence of octets.  It should NOT be
adjusted.

For one, we don't have any indication that it would be as effective if
it were to be changed.

---

From: Amos Jeffries <[email-masked]>
Date: Wed, 17 Jul 2013 00:24:52 +1200

> For one, we don't have any indication that it would be as effective if

Ah. Thank you. Okay I will code up the HTTP/1.1 agent to expect those 
exact octets.

I still think there should be a second temporary note to clarify that 
intention for the drafts so long as the section 3.1 special note exists.

Amos