Dump header name and value length (not value itself) if value too long.
gfe-relnote: Log only change, not protected.
PiperOrigin-RevId: 296224216
Change-Id: I3386574bf73b295d9362b5d20291d299f1a85b3a
diff --git a/http2/hpack/decoder/hpack_decoder.cc b/http2/hpack/decoder/hpack_decoder.cc
index 1013292..bca83db 100644
--- a/http2/hpack/decoder/hpack_decoder.cc
+++ b/http2/hpack/decoder/hpack_decoder.cc
@@ -66,6 +66,10 @@
HTTP2_CODE_COUNT_N(decompress_failure_3, 4, 23);
return false;
} else if (DetectError()) {
+ if (error_ == HpackDecodingError::kValueTooLong) {
+ HTTP2_LOG_FIRST_N(ERROR, 1) << "Header value too long for header name: "
+ << entry_buffer_.name().str();
+ }
HTTP2_CODE_COUNT_N(decompress_failure_3, 5, 23);
return false;
}
diff --git a/http2/hpack/decoder/hpack_whole_entry_buffer.cc b/http2/hpack/decoder/hpack_whole_entry_buffer.cc
index da5613e..de26c0d 100644
--- a/http2/hpack/decoder/hpack_whole_entry_buffer.cc
+++ b/http2/hpack/decoder/hpack_whole_entry_buffer.cc
@@ -94,6 +94,9 @@
HTTP2_DVLOG(1) << "Value length (" << len
<< ") is longer than permitted (" << max_string_size_bytes_
<< ")";
+ HTTP2_LOG_FIRST_N(ERROR, 1)
+ << "Header value length " << len << " exceeds limit of "
+ << max_string_size_bytes_;
ReportError(HpackDecodingError::kValueTooLong);
HTTP2_CODE_COUNT_N(decompress_failure_3, 21, 23);
return;
diff --git a/http2/hpack/decoder/hpack_whole_entry_buffer.h b/http2/hpack/decoder/hpack_whole_entry_buffer.h
index 5c0bfe2..27eb718 100644
--- a/http2/hpack/decoder/hpack_whole_entry_buffer.h
+++ b/http2/hpack/decoder/hpack_whole_entry_buffer.h
@@ -79,6 +79,8 @@
void OnValueEnd() override;
void OnDynamicTableSizeUpdate(size_t size) override;
+ const HpackDecoderStringBuffer& name() const { return name_; }
+
private:
void ReportError(HpackDecodingError error);
diff --git a/http2/platform/api/http2_logging.h b/http2/platform/api/http2_logging.h
index cd93ac3..d73c49c 100644
--- a/http2/platform/api/http2_logging.h
+++ b/http2/platform/api/http2_logging.h
@@ -19,4 +19,6 @@
#define HTTP2_DLOG_EVERY_N(severity, n) HTTP2_DLOG_EVERY_N_IMPL(severity, n)
+#define HTTP2_LOG_FIRST_N(severity, n) HTTP2_LOG_FIRST_N_IMPL(severity, n)
+
#endif // QUICHE_HTTP2_PLATFORM_API_HTTP2_LOGGING_H_