You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "Leif Hedstrom (JIRA)" <ji...@apache.org> on 2016/02/04 19:55:45 UTC

[jira] [Closed] (TS-3844) Don't send GOAWAY frame when receiving a DATA frame on a closed stream

     [ https://issues.apache.org/jira/browse/TS-3844?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Leif Hedstrom closed TS-3844.
-----------------------------

> Don't send GOAWAY frame when receiving a DATA frame on a closed stream
> ----------------------------------------------------------------------
>
>                 Key: TS-3844
>                 URL: https://issues.apache.org/jira/browse/TS-3844
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: HTTP/2
>            Reporter: Bryan Call
>            Assignee: Bryan Call
>            Priority: Minor
>             Fix For: 6.0.0
>
>
> I am seeing in production we are closing the connection when we get a DATA frame on a closed connection:
> {code}
> Breakpoint 3, rcv_data_frame (cs=..., cstate=..., frame=...) at Http2ConnectionState.cc:84
> 84	Http2ConnectionState.cc: No such file or directory.
> 	in Http2ConnectionState.cc
> #0  rcv_data_frame (cs=..., cstate=..., frame=...) at Http2ConnectionState.cc:84
> #1  0x0000000000644359 in Http2ConnectionState::main_event_handler (this=0x2b943c89c298, event=2253, edata=0x7fffc27fd120) at Http2ConnectionState.cc:733
> #2  0x0000000000510b74 in Continuation::handleEvent (this=0x2b943c89c298, event=2253, data=0x7fffc27fd120) at ../iocore/eventsystem/I_Continuation.h:145
> #3  0x000000000063ed1d in send_connection_event (cont=0x2b943c89c298, event=2253, edata=0x7fffc27fd120) at Http2ClientSession.cc:59
> $1 = (Http2Stream *) 0x0
> $2 = 87
> $3 = 87
> {code}
> In the code:
> {code}
>   Http2Stream *stream = cstate.find_stream(id);
>   if (stream == NULL) {
>     if (id <= cstate.get_latest_stream_id()) {
>       return Http2Error(HTTP2_ERROR_CLASS_CONNECTION, HTTP2_ERROR_STREAM_CLOSED);  <--- should be changed to HTTP2_ERROR_CLASS_STREAM
>     } else {
>       return Http2Error(HTTP2_ERROR_CLASS_CONNECTION, HTTP2_ERROR_PROTOCOL_ERROR);
>     }
>   }
> {code}
> RFC - 5.4.2.  Stream Error Handling:
> {code}
>    Normally, an endpoint SHOULD NOT send more than one RST_STREAM frame
>    for any stream.  However, an endpoint MAY send additional RST_STREAM
>    frames if it receives frames on a closed stream after more than a
>    round-trip time.  This behavior is permitted to deal with misbehaving
>    implementations.
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)