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) {