Bryan Call created TS-3844:
------------------------------

             Summary: 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
            Reporter: Bryan Call


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)

Reply via email to