| 653 | } |
| 654 | |
| 655 | H2ParseResult H2Context::OnContinuation( |
| 656 | butil::IOBufBytesIterator& it, const H2FrameHead& frame_head) { |
| 657 | H2StreamContext* sctx = FindStream(frame_head.stream_id); |
| 658 | if (sctx == NULL) { |
| 659 | if (is_client_side()) { |
| 660 | RPC_VLOG << "Fail to find stream_id=" << frame_head.stream_id; |
| 661 | // Ignore the message without closing the socket. |
| 662 | H2StreamContext tmp_sctx(false); |
| 663 | tmp_sctx.Init(this, frame_head.stream_id); |
| 664 | tmp_sctx.OnContinuation(it, frame_head); |
| 665 | return MakeH2Message(NULL); |
| 666 | } else { |
| 667 | LOG(ERROR) << "Fail to find stream_id=" << frame_head.stream_id; |
| 668 | return MakeH2Error(H2_PROTOCOL_ERROR); |
| 669 | } |
| 670 | } |
| 671 | return sctx->OnContinuation(it, frame_head); |
| 672 | } |
| 673 | |
| 674 | H2ParseResult H2StreamContext::OnContinuation( |
| 675 | butil::IOBufBytesIterator& it, const H2FrameHead& frame_head) { |
nothing calls this directly
no test coverage detected