Fixes test case `OgHttp2AdapterServerTest.ServerReceivesTooLargeHeader` in oghttp2_adapter_test.cc.
The test case previously did not set the `max_header_list_bytes` option, so our HPACK implementation was rejecting the header block before the `max_header_field_size` option could have any effect.
PiperOrigin-RevId: 420843490
diff --git a/http2/adapter/oghttp2_adapter_test.cc b/http2/adapter/oghttp2_adapter_test.cc
index a822843..302e745 100644
--- a/http2/adapter/oghttp2_adapter_test.cc
+++ b/http2/adapter/oghttp2_adapter_test.cc
@@ -3302,6 +3302,7 @@
TEST(OgHttp2AdapterServerTest, ServerReceivesTooLargeHeader) {
DataSavingVisitor visitor;
OgHttp2Adapter::Options options{.perspective = Perspective::kServer,
+ .max_header_list_bytes = 64 * 1024,
.max_header_field_size = 64 * 1024};
auto adapter = OgHttp2Adapter::Create(visitor, options);
@@ -3331,8 +3332,11 @@
EXPECT_CALL(visitor, OnHeaderForStream(1, ":scheme", "https"));
EXPECT_CALL(visitor, OnHeaderForStream(1, ":authority", "example.com"));
EXPECT_CALL(visitor, OnHeaderForStream(1, ":path", "/this/is/request/one"));
- EXPECT_CALL(visitor, OnConnectionError(ConnectionError::kParseError));
- // Further header processing is skipped, as the header field is too large.
+ EXPECT_CALL(visitor, OnFrameHeader(1, _, CONTINUATION, 0)).Times(3);
+ EXPECT_CALL(visitor, OnFrameHeader(1, _, CONTINUATION, 4));
+ EXPECT_CALL(
+ visitor,
+ OnInvalidFrame(1, Http2VisitorInterface::InvalidFrameError::kHttpHeader));
const int64_t result = adapter->ProcessBytes(frames);
EXPECT_EQ(static_cast<int64_t>(frames.size()), result);
@@ -3341,19 +3345,19 @@
EXPECT_CALL(visitor, OnBeforeFrameSent(SETTINGS, 0, _, 0x0));
EXPECT_CALL(visitor, OnFrameSent(SETTINGS, 0, _, 0x0, 0));
- // Since the library opted not to process the header, it generates a GOAWAY
- // with error code COMPRESSION_ERROR.
- EXPECT_CALL(visitor, OnBeforeFrameSent(GOAWAY, 0, _, 0x0));
- EXPECT_CALL(visitor,
- OnFrameSent(GOAWAY, 0, _, 0x0,
- static_cast<int>(Http2ErrorCode::COMPRESSION_ERROR)));
+ EXPECT_CALL(visitor, OnBeforeFrameSent(SETTINGS, 0, _, 0x1));
+ EXPECT_CALL(visitor, OnFrameSent(SETTINGS, 0, _, 0x1, 0));
+ EXPECT_CALL(visitor, OnBeforeFrameSent(RST_STREAM, 1, 4, 0x0));
+ EXPECT_CALL(visitor, OnFrameSent(RST_STREAM, 1, 4, 0x0, 1));
+ EXPECT_CALL(visitor, OnCloseStream(1, Http2ErrorCode::HTTP2_NO_ERROR));
int send_result = adapter->Send();
// Some bytes should have been serialized.
EXPECT_EQ(0, send_result);
- // SETTINGS and GOAWAY.
+ // SETTINGS, SETTINGS ack, and RST_STREAM.
EXPECT_THAT(visitor.data(), EqualsFrames({spdy::SpdyFrameType::SETTINGS,
- spdy::SpdyFrameType::GOAWAY}));
+ spdy::SpdyFrameType::SETTINGS,
+ spdy::SpdyFrameType::RST_STREAM}));
}
TEST(OgHttp2AdapterServerTest, ServerRejectsStreamData) {