Migrates a QUICHE_BUG to a QUICHE_LOG(ERROR).
This resolves a TODO, and fixes test failures in upstream Envoy tests.
PiperOrigin-RevId: 433483080
diff --git a/http2/adapter/oghttp2_adapter_test.cc b/http2/adapter/oghttp2_adapter_test.cc
index e797e48..8f0aaba 100644
--- a/http2/adapter/oghttp2_adapter_test.cc
+++ b/http2/adapter/oghttp2_adapter_test.cc
@@ -2990,13 +2990,41 @@
EXPECT_EQ(peer_window, kInitialFlowControlWindowSize);
}
-TEST(OgHttp2AdapterTest, MarkDataConsumedForStream) {
+TEST(OgHttp2AdapterTest, MarkDataConsumedForNonexistentStream) {
DataSavingVisitor visitor;
OgHttp2Adapter::Options options{.perspective = Perspective::kServer};
auto adapter = OgHttp2Adapter::Create(visitor, options);
- EXPECT_QUICHE_BUG(adapter->MarkDataConsumedForStream(1, 11),
- "Stream 1 not found");
+ // Send some data on stream 1 so the connection window manager doesn't
+ // underflow later.
+ const std::string frames = TestFrameSequence()
+ .ClientPreface()
+ .Headers(1,
+ {{":method", "GET"},
+ {":scheme", "https"},
+ {":authority", "example.com"},
+ {":path", "/this/is/request/one"}},
+ /*fin=*/false)
+ .Data(1, "Some data on stream 1")
+ .Serialize();
+
+ // Client preface (empty SETTINGS)
+ EXPECT_CALL(visitor, OnFrameHeader(0, 0, SETTINGS, 0));
+ EXPECT_CALL(visitor, OnSettingsStart());
+ EXPECT_CALL(visitor, OnSettingsEnd());
+ // Stream 1
+ EXPECT_CALL(visitor, OnFrameHeader(1, _, HEADERS, 4));
+ EXPECT_CALL(visitor, OnBeginHeadersForStream(1));
+ EXPECT_CALL(visitor, OnHeaderForStream).Times(4);
+ EXPECT_CALL(visitor, OnEndHeadersForStream(1));
+ EXPECT_CALL(visitor, OnFrameHeader(1, _, DATA, 0));
+ EXPECT_CALL(visitor, OnBeginDataForStream(1, _));
+ EXPECT_CALL(visitor, OnDataForStream(1, _));
+
+ adapter->ProcessBytes(frames);
+
+ // This should not cause a crash or QUICHE_BUG.
+ adapter->MarkDataConsumedForStream(3, 11);
}
TEST(OgHttp2AdapterTest, TestSerialize) {
diff --git a/http2/adapter/oghttp2_session.cc b/http2/adapter/oghttp2_session.cc
index 35f498c..09ad924 100644
--- a/http2/adapter/oghttp2_session.cc
+++ b/http2/adapter/oghttp2_session.cc
@@ -497,9 +497,8 @@
int OgHttp2Session::Consume(Http2StreamId stream_id, size_t num_bytes) {
auto it = stream_map_.find(stream_id);
if (it == stream_map_.end()) {
- // TODO(b/181586191): LOG_ERROR rather than QUICHE_BUG.
- QUICHE_BUG(stream_consume_notfound)
- << "Stream " << stream_id << " not found";
+ QUICHE_LOG(ERROR) << "Stream " << stream_id << " not found when consuming "
+ << num_bytes << " bytes";
} else {
it->second.window_manager.MarkDataFlushed(num_bytes);
}