diff --git a/source/common/quic/codec_impl.cc b/source/common/quic/codec_impl.cc index 0afcf65b99055..6ef3eb1be5940 100644 --- a/source/common/quic/codec_impl.cc +++ b/source/common/quic/codec_impl.cc @@ -71,6 +71,14 @@ QuicHttpClientConnectionImpl::QuicHttpClientConnectionImpl( session.set_max_inbound_header_list_size(max_request_headers_kb * 1024); } +void QuicHttpClientConnectionImpl::goAway() { +// TODO(alyssawilk) remove these guards once QUICHE has been updated to remove +// the perspective check. +#if defined(NDEBUG) + quic_client_session_.SendHttp3GoAway(quic::QUIC_PEER_GOING_AWAY, "client goaway"); +#endif +} + Http::RequestEncoder& QuicHttpClientConnectionImpl::newStream(Http::ResponseDecoder& response_decoder) { EnvoyQuicClientStream* stream = diff --git a/source/common/quic/codec_impl.h b/source/common/quic/codec_impl.h index 7faed7d94136f..b5136bb1b6313 100644 --- a/source/common/quic/codec_impl.h +++ b/source/common/quic/codec_impl.h @@ -70,8 +70,8 @@ class QuicHttpClientConnectionImpl : public QuicHttpConnectionImplBase, Http::RequestEncoder& newStream(Http::ResponseDecoder& response_decoder) override; // Http::Connection - void goAway() override { NOT_REACHED_GCOVR_EXCL_LINE; } - void shutdownNotice() override { NOT_REACHED_GCOVR_EXCL_LINE; } + void goAway() override; + void shutdownNotice() override {} void onUnderlyingConnectionAboveWriteBufferHighWatermark() override; void onUnderlyingConnectionBelowWriteBufferLowWatermark() override; diff --git a/test/integration/multiplexed_integration_test.cc b/test/integration/multiplexed_integration_test.cc index 0357402a6993a..58b9b6d129237 100644 --- a/test/integration/multiplexed_integration_test.cc +++ b/test/integration/multiplexed_integration_test.cc @@ -29,7 +29,6 @@ using ::testing::MatchesRegex; namespace Envoy { -// TODO(#2557) fix all the failures. #define EXCLUDE_DOWNSTREAM_HTTP3 \ if (downstreamProtocol() == Http::CodecType::HTTP3) { \ return; \ @@ -906,8 +905,7 @@ TEST_P(Http2IntegrationTest, GrpcRetry) { testGrpcRetry(); } // Verify the case where there is an HTTP/2 codec/protocol error with an active stream. TEST_P(Http2IntegrationTest, CodecErrorAfterStreamStart) { - // TODO(#16757) Needs HTTP/3 "bad frame" equivalent. - EXCLUDE_DOWNSTREAM_HTTP3; + EXCLUDE_DOWNSTREAM_HTTP3; // The HTTP/3 client has no "bad frame" equivalent. initialize(); codec_client_ = makeHttpConnection(lookupPort("http")); @@ -940,7 +938,7 @@ TEST_P(Http2IntegrationTest, Http2BadMagic) { } TEST_P(Http2IntegrationTest, BadFrame) { - EXCLUDE_DOWNSTREAM_HTTP3; // Needs HTTP/3 "bad frame" equivalent. + EXCLUDE_DOWNSTREAM_HTTP3; // The HTTP/3 client has no "bad frame" equivalent. initialize(); std::string response; @@ -956,7 +954,6 @@ TEST_P(Http2IntegrationTest, BadFrame) { // Send client headers, a GoAway and then a body and ensure the full request and // response are received. TEST_P(Http2IntegrationTest, GoAway) { - EXCLUDE_DOWNSTREAM_HTTP3; // QuicHttpClientConnectionImpl::goAway NOT_REACHED_GCOVR_EXCL_LINE config_helper_.prependFilter(ConfigHelper::defaultHealthCheckFilter()); initialize(); diff --git a/test/integration/protocol_integration_test.cc b/test/integration/protocol_integration_test.cc index 133dc3f87f0fb..a33c7bc0e83d4 100644 --- a/test/integration/protocol_integration_test.cc +++ b/test/integration/protocol_integration_test.cc @@ -53,12 +53,6 @@ void setDoNotValidateRouteConfig( route_config->mutable_validate_clusters()->set_value(false); }; -// TODO(#2557) fix all the failures. -#define EXCLUDE_DOWNSTREAM_HTTP3 \ - if (downstreamProtocol() == Http::CodecType::HTTP3) { \ - return; \ - } - TEST_P(ProtocolIntegrationTest, TrailerSupportHttp1) { config_helper_.addConfigModifier(setEnableDownstreamTrailersHttp1()); config_helper_.addConfigModifier(setEnableUpstreamTrailersHttp1());