Re: debug field in GOAWAY

On Fri, Feb 21, 2014 at 02:45:13PM +0000, Cory Benfield wrote:
> On 21 February 2014 14:36, Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> wrote:
> > We have 17 implementations so far. Are there anyone who use debug field in
> > GOAWAY in a meaningful way?
> 
> Of course, if someone has a philosophical reason to remove it or keep
> it in I'll happily defer to their wisdom.

Well, there are a lot of uses of GOAWAY(PROTOCOL_ERROR). It could be
helpful to know which was violated when debugging an implementation.

Seraching PROTOCOL_ERROR from spec turns up that receiving anything
of following will cause GOAWAY(PRTOCOL_ERROR):

- Frame of unknown type.
- Anything except PRIORITY or RST_STREAM in reserved (local).
- Anything except HEADERS or RST_STReAM in reserved (remote).
- Anything(?) signficantly after stream close (MAY).
- Frame in unexpected state.
- Frame opening stream with stream not greater than all previous.
- Frame with PAD_HIGH,!PAD_LOW.
- DATA frame on stream 0.
- Frame with more padding than size.
- Anything except CONTINUATION with active header block.
- Anything on another stream with active header block.
- HEADERS on stream 0.
- PRIORITY on stream 0.
- RST_STREAM on stream 0.
- RST_STREAM on idle stream.
- SETTINGS on stream other than 0.
- "Badly formed or incomplete" SETTINGS.
- PUSH_PROMISE with pushing disabled.
- SETTINGS_ENABLE_PUSH anything except 0 or 1.
- SETTINGS with unknown setting.
- PUSH_PROMISE associated with stream 0.
- PUSH_PROMISE associated with stream not open down.
- PUSH_PROMISE promising non-idle stream.
- PING on stream other than 0.
- GOAWAY on stream other than 0.
- CONTINUATION without active header block.
- PUSH_PROMISE on server.
- SETTINGS from server that enables pushing.

Then there's RST_STREAM(PROTOCOL_ERROR), but it is only used in
one place, namely receiving incomplete or with invalid method
PUSH_PROMISE.


-Ilari

Received on Friday, 21 February 2014 15:52:59 UTC