Repository: trafficserver Updated Branches: refs/heads/6.0.x 151489507 -> 1680acd23
TS-3902: Wrong conditional for checking on continuation frame and to send the go_away frame Moved the continuation id check outside of the mutex (cherry picked from commit 6a9c92775a3a84ef4ebd7807484f9f21b075477a) Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/1680acd2 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/1680acd2 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/1680acd2 Branch: refs/heads/6.0.x Commit: 1680acd23d4235a52ff7f1ac7b3bdc603a7258d0 Parents: 1514895 Author: Bryan Call <[email protected]> Authored: Thu Sep 10 14:54:28 2015 -0700 Committer: Bryan Call <[email protected]> Committed: Thu Sep 10 14:59:29 2015 -0700 ---------------------------------------------------------------------- proxy/http2/Http2ClientSession.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1680acd2/proxy/http2/Http2ClientSession.cc ---------------------------------------------------------------------- diff --git a/proxy/http2/Http2ClientSession.cc b/proxy/http2/Http2ClientSession.cc index b02f983..fe12b95 100644 --- a/proxy/http2/Http2ClientSession.cc +++ b/proxy/http2/Http2ClientSession.cc @@ -361,9 +361,10 @@ Http2ClientSession::state_start_frame_read(int event, void *edata) // CONTINUATIONs MUST follow behind HEADERS which doesn't have END_HEADERS Http2StreamId continued_stream_id = this->connection_state.get_continued_stream_id(); - if (continued_stream_id != 0 && this->current_hdr.type != HTTP2_FRAME_TYPE_CONTINUATION) { + if (continued_stream_id != 0 && continued_stream_id != this->current_hdr.streamid && + this->current_hdr.type != HTTP2_FRAME_TYPE_CONTINUATION) { SCOPED_MUTEX_LOCK(lock, this->connection_state.mutex, this_ethread()); - if (!this->connection_state.is_state_closed() && continued_stream_id != this->current_hdr.streamid) { + if (!this->connection_state.is_state_closed()) { this->connection_state.send_goaway_frame(this->current_hdr.streamid, HTTP2_ERROR_PROTOCOL_ERROR); } return 0;
