From 4136755651f7cfd3d6dedd09fdc5c6d437c4d2a9 Mon Sep 17 00:00:00 2001 From: Asra Ali Date: Mon, 12 Oct 2020 13:27:23 -0400 Subject: [PATCH] fix assert Signed-off-by: Asra Ali --- source/common/router/upstream_request.cc | 2 - test/integration/h2_corpus/buffered_body | 61 ++++++++++++++++++++++ test/integration/http2_integration_test.cc | 19 +++++++ 3 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 test/integration/h2_corpus/buffered_body diff --git a/source/common/router/upstream_request.cc b/source/common/router/upstream_request.cc index e6465f7e73aff..b906df34fdc9a 100644 --- a/source/common/router/upstream_request.cc +++ b/source/common/router/upstream_request.cc @@ -440,8 +440,6 @@ void UpstreamRequest::encodeBodyAndTrailers() { downstream_metadata_map_vector_); upstream_->encodeMetadata(downstream_metadata_map_vector_); downstream_metadata_map_vector_.clear(); - - ASSERT(buffered_request_body_); } if (buffered_request_body_) { diff --git a/test/integration/h2_corpus/buffered_body b/test/integration/h2_corpus/buffered_body new file mode 100644 index 0000000000000..e3f67d32d3cdc --- /dev/null +++ b/test/integration/h2_corpus/buffered_body @@ -0,0 +1,61 @@ +events { + downstream_send_event { + h2_frames { + settings { + } + } + h2_frames { + request { + stream_index: 1 + host: "host" + path: "/p?th/to/longo" + } + } + } +} +events { + downstream_send_event { + h2_frames { + metadata { + flags: END_HEADERS + stream_index: 1 + metadata { + metadata { + key: "" + value: "@" + } + metadata { + key: "(" + value: "" + } + metadata { + key: "Timeout Seconds" + value: "10" + } + metadata { + key: "tincoes" + value: "15" + } + } + } + } + } +} +events { + downstream_send_event { + h2_frames { + settings { + flags: ACK + } + } + } +} +events { + upstream_send_event { + h2_frames { + window_update { + stream_index: 2147483648 + } + } + } +} diff --git a/test/integration/http2_integration_test.cc b/test/integration/http2_integration_test.cc index ac52fd13d5a34..588e9f427438e 100644 --- a/test/integration/http2_integration_test.cc +++ b/test/integration/http2_integration_test.cc @@ -568,6 +568,25 @@ TEST_P(Http2MetadataIntegrationTest, RequestMetadataReachSizeLimit) { ASSERT_FALSE(response->complete()); } +TEST_P(Http2MetadataIntegrationTest, RequestMetadataThenTrailers) { + initialize(); + codec_client_ = makeHttpConnection(lookupPort("http")); + + auto encoder_decoder = codec_client_->startRequest(default_request_headers_); + request_encoder_ = &encoder_decoder.first; + auto response = std::move(encoder_decoder.second); + Http::MetadataMap metadata_map = {{"key", "value"}}; + codec_client_->sendMetadata(*request_encoder_, metadata_map); + Http::TestRequestTrailerMapImpl request_trailers{{"trailer", "trailer"}}; + codec_client_->sendTrailers(*request_encoder_, request_trailers); + + waitForNextUpstreamRequest(); + + upstream_request_->encodeHeaders(default_response_headers_, true); + response->waitForEndStream(); + ASSERT_TRUE(response->complete()); +} + static std::string request_metadata_filter = R"EOF( name: request-metadata-filter typed_config: