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