Re: Design Issue: Merge RST_STREAM and GOAWAY into a single ERROR frame type

Speaking candidly, if we find ourselves requiring more than 8 boolean
flags on an error frame we should all just quit and go home.

On Fri, May 3, 2013 at 1:34 PM, Jeff Pinner <jpinner@twitter.com> wrote:
> IIRC, when this was brought up at the last F2F the rational for NOT doing
> this was that frame types were cheaper than flags (256 frame types, 8
> flags).
>
> That being said I think we should consider combining them :)
>
>
> On Fri, May 3, 2013 at 1:04 PM, James M Snell <jasnell@gmail.com> wrote:
>>
>> As a simplification, I'd like to suggest that we merge the RST_STREAM
>> and GOAWAY frames into a single ERROR frame with the following
>> definition:
>>
>>  0                   1                   2                   3
>>  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
>> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>> |                      Error Code (32)                          |
>> +---------------------------------------------------------------+
>> |X|                  Last-Stream-ID (31)                        |
>> +-+-------------------------------------------------------------+
>>
>> (note that this flips the field order from the GOAWAY frame)
>>
>> A frame-specific GOAWAY flag bit (0x2) would be defined for the frame,
>> and the Last-Stream-ID field would only be included in the frame data
>> if this flag was set.
>>
>> This does a couple of things for us:
>>
>> 1. It simplifies the error handling and reduces the number of core frame
>> types.
>> 2. It allows us to terminate a stream and terminate the session in a
>> single frame if necessary
>> 3. It gives us a way of reporting non-terminal session errors
>> (currently RST_STREAM is forbidden to use stream id #0 and GOAWAY is
>> always terminal).
>>
>

Received on Friday, 3 May 2013 20:54:13 UTC