Add QpackProgressiveDecoder-generated error message to quic_offline_decoder output. Before: qpack_offline_decoder encoded/qpack-06/f5/fb-req-hq.out.256.0.0 qifs/fb-req-hq.qif E0710 09:36:55.067986 28697 qpack_offline_decoder.cc:155] Decoding error on stream 2 After: qpack_offline_decoder encoded/qpack-06/f5/fb-req-hq.out.256.0.0 qifs/fb-req-hq.qif E0710 09:37:15.694075 30089 qpack_offline_decoder.cc:155] Decoding error on stream 2: Error decoding Required Insert Count. gfe-relnote: n/a, test-only change in QUIC v99-only code. PiperOrigin-RevId: 257438816 Change-Id: I7ec6f5335e0a552f0b5e0b32d489ade7a4431dd1
diff --git a/quic/core/qpack/offline/qpack_offline_decoder.cc b/quic/core/qpack/offline/qpack_offline_decoder.cc index 6efebdc..1064c78 100644 --- a/quic/core/qpack/offline/qpack_offline_decoder.cc +++ b/quic/core/qpack/offline/qpack_offline_decoder.cc
@@ -152,7 +152,8 @@ progressive_decoder->EndHeaderBlock(); if (headers_handler.decoding_error_detected()) { - QUIC_LOG(ERROR) << "Decoding error on stream " << stream_id; + QUIC_LOG(ERROR) << "Decoding error on stream " << stream_id << ": " + << headers_handler.error_message(); return false; }
diff --git a/quic/core/qpack/qpack_decoder_test_utils.cc b/quic/core/qpack/qpack_decoder_test_utils.cc index ab0e2b8..173270d 100644 --- a/quic/core/qpack/qpack_decoder_test_utils.cc +++ b/quic/core/qpack/qpack_decoder_test_utils.cc
@@ -35,11 +35,12 @@ } void TestHeadersHandler::OnDecodingErrorDetected( - QuicStringPiece /*error_message*/) { + QuicStringPiece error_message) { ASSERT_FALSE(decoding_completed_); ASSERT_FALSE(decoding_error_detected_); decoding_error_detected_ = true; + error_message_.assign(error_message.data(), error_message.size()); } spdy::SpdyHeaderBlock TestHeadersHandler::ReleaseHeaderList() { @@ -57,6 +58,11 @@ return decoding_error_detected_; } +const std::string& TestHeadersHandler::error_message() const { + DCHECK(decoding_error_detected_); + return error_message_; +} + void QpackDecode( QpackDecoder::EncoderStreamErrorDelegate* encoder_stream_error_delegate, QpackStreamSenderDelegate* decoder_stream_sender_delegate,
diff --git a/quic/core/qpack/qpack_decoder_test_utils.h b/quic/core/qpack/qpack_decoder_test_utils.h index c2e909c..d5f494c 100644 --- a/quic/core/qpack/qpack_decoder_test_utils.h +++ b/quic/core/qpack/qpack_decoder_test_utils.h
@@ -5,6 +5,8 @@ #ifndef QUICHE_QUIC_CORE_QPACK_QPACK_DECODER_TEST_UTILS_H_ #define QUICHE_QUIC_CORE_QPACK_QPACK_DECODER_TEST_UTILS_H_ +#include <string> + #include "net/third_party/quiche/src/quic/core/qpack/qpack_decoder.h" #include "net/third_party/quiche/src/quic/core/qpack/qpack_progressive_decoder.h" #include "net/third_party/quiche/src/quic/core/qpack/qpack_test_utils.h" @@ -52,11 +54,13 @@ bool decoding_completed() const; bool decoding_error_detected() const; + const std::string& error_message() const; private: spdy::SpdyHeaderBlock header_list_; bool decoding_completed_; bool decoding_error_detected_; + std::string error_message_; }; class MockHeadersHandler