- From: Jeff Pinner <jpinner@twitter.com>
- Date: Tue, 18 Jun 2013 13:32:59 -0700
- To: Martin Thomson <martin.thomson@gmail.com>
- Cc: Amos Jeffries <squid3@treenet.co.nz>, HTTP Working Group <ietf-http-wg@w3.org>
- Message-ID: <CA+pLO_g8bNPmP0hwCAeRbs4_JHQb+79Pk9waCqPA8LoyJvRjTg@mail.gmail.com>
I am going to make a completely contrived example to try to illustrate my thoughts: Let's say I have a message based protocol that tries to send the following messages over stream 1: Content-Type: text Message 1 Content-Type: json {message_id: 2} This could be done by encoding the following frames on stream 1: Stream-Id 1 HEADERS(END_HEADERS): Content-Type: text Stream-Id 1 DATA(END_MESSAGE): Message1 Stream-Id 1 HEADERS(END_HEADERS): Content-Type: json Stream-Id 1 DATA(END_STREAM,END_MESSAGE): {message_id: 2} Now for the sake of argument lets say that the frame length was so small that "Content-Type" couldn't fit completely in the frame. Then the client would have to send the following: Stream-Id 1 HEADERS: Content- Stream-Id 1 HEADERS(END_HEADERS): Type: text Stream-Id 1 DATA(END_MESSAGE): Message1 Stream-Id 1 HEADERS: Content- Stream-Id 1 HEADERS(END_HEADERS): Type: json Stream-Id 1 DATA(END_STREAM,END_MESSAGE): {message_id: 2} In any case -- the point here is to illustrate that concatenation of header blocks for decoding is completely orthogonal to the possible existence of messages and their boundaries. - Jeff On Tue, Jun 18, 2013 at 11:53 AM, Martin Thomson <martin.thomson@gmail.com>wrote: > On 18 June 2013 11:39, Jeff Pinner <jpinner@twitter.com> wrote: > > A suggestion for the HEADERS frame flags that incorporates "FINAL", > > "MSG_DONE", and changes the polarity of "CONTINUES:" > > > > 0x1: END_STREAM - indicates that this frame is the last the endpoint will > > send on the identified stream. > > 0x2: END_MESSAGE - indicates that this frame comprises a message > boundary. > > 0x4: END_HEADERS - indicates that this frame marks the end of the encoded > > header block. > > I like this generally, however I'm struggling with the distinction > between END_MESSAGE and END_HEADERS. > > I can appreciate the logical purity of the argument for a distinction, > but I can't see a practical benefit to it. END_HEADERS implies > concatenation, but END_MESSAGE just ...ends? I'm not sure then what > you do with a sequence of frames that form a message, if you aren't > concatenating them. Websockets APIs concatenate. > > If this is about the hard lock-out that we have when HEADERS are > continued, that doesn't need a special signal, just some text. >
Received on Tuesday, 18 June 2013 20:33:26 UTC