Call Visitor::OnError() from HttpDecoder::RaiseError().
This is to make sure connection is closed on error.
This bug was caught by ClusterFuzz at https://crbug.com/989416.
gfe-relnote: n/a, change to QUIC v99-only code. Protected by existing disabled gfe2_reloadable_flag_quic_enable_version_99.
PiperOrigin-RevId: 262337299
Change-Id: Ib5241b0c53228dfe48356f5c03d9f4ffae499611
diff --git a/quic/core/http/http_decoder.cc b/quic/core/http/http_decoder.cc
index 550aa6f..e105fc6 100644
--- a/quic/core/http/http_decoder.cc
+++ b/quic/core/http/http_decoder.cc
@@ -126,7 +126,6 @@
if (current_frame_length_ > MaxFrameLength(current_frame_type_)) {
// TODO(bnc): Signal HTTP_EXCESSIVE_LOAD or similar to peer.
RaiseError(QUIC_INTERNAL_ERROR, "Frame is too large");
- visitor_->OnError(this);
return false;
}
@@ -440,6 +439,7 @@
state_ = STATE_ERROR;
error_ = error;
error_detail_ = std::move(error_detail);
+ visitor_->OnError(this);
}
bool HttpDecoder::ParsePriorityFrame(QuicDataReader* reader,