Surface hpack decoder detailed error for header value too long, and put detailed error to quic connection close error details. only change connection close error detail, not protected.
PiperOrigin-RevId: 323008871
Change-Id: I6f41118464ae686fbfeb009c8ac13d83b8fff3f0
diff --git a/quic/core/http/quic_headers_stream_test.cc b/quic/core/http/quic_headers_stream_test.cc
index d9e1c8e..d2736ff 100644
--- a/quic/core/http/quic_headers_stream_test.cc
+++ b/quic/core/http/quic_headers_stream_test.cc
@@ -87,7 +87,8 @@
public:
MOCK_METHOD(void,
OnError,
- (http2::Http2DecoderAdapter::SpdyFramerError error),
+ (http2::Http2DecoderAdapter::SpdyFramerError error,
+ std::string detailed_error),
(override));
MOCK_METHOD(void,
OnDataFrameHeader,
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc
index b0bf7e9..63b6b87 100644
--- a/quic/core/http/quic_spdy_session.cc
+++ b/quic/core/http/quic_spdy_session.cc
@@ -135,7 +135,8 @@
QUIC_INVALID_HEADERS_STREAM_DATA);
}
- void OnError(Http2DecoderAdapter::SpdyFramerError error) override {
+ void OnError(Http2DecoderAdapter::SpdyFramerError error,
+ std::string detailed_error) override {
QuicErrorCode code;
switch (error) {
case Http2DecoderAdapter::SpdyFramerError::SPDY_HPACK_INDEX_VARINT_ERROR:
@@ -200,7 +201,7 @@
code = QUIC_INVALID_HEADERS_STREAM_DATA;
}
CloseConnection(quiche::QuicheStrCat(
- "SPDY framing error: ",
+ "SPDY framing error: ", detailed_error,
Http2DecoderAdapter::SpdyFramerErrorToString(error)),
code);
}