diff --git a/config/envoyconfig/listeners_main.go b/config/envoyconfig/listeners_main.go index 167714f82..b72f760f3 100644 --- a/config/envoyconfig/listeners_main.go +++ b/config/envoyconfig/listeners_main.go @@ -212,9 +212,14 @@ func (b *Builder) buildMainHTTPConnectionManagerFilter( if useQUIC { mgr.CodecType = envoy_extensions_filters_network_http_connection_manager.HttpConnectionManager_HTTP3 - mgr.Http3ProtocolOptions = &envoy_config_core_v3.Http3ProtocolOptions{} + mgr.Http3ProtocolOptions = http3ProtocolOptions } else if cfg.Options.GetCodecType() == config.CodecTypeHTTP3 { mgr.CodecType = envoy_extensions_filters_network_http_connection_manager.HttpConnectionManager_AUTO + } else if cfg.Options.GetCodecType() == config.CodecTypeAuto || cfg.Options.GetCodecType() == config.CodecTypeHTTP2 { + mgr.CodecType = cfg.Options.GetCodecType().ToEnvoy() + mgr.Http2ProtocolOptions = &envoy_config_core_v3.Http2ProtocolOptions{ + AllowConnect: true, + } } else { mgr.CodecType = cfg.Options.GetCodecType().ToEnvoy() } diff --git a/config/envoyconfig/listeners_test.go b/config/envoyconfig/listeners_test.go index b26925e28..bd7d9baa9 100644 --- a/config/envoyconfig/listeners_test.go +++ b/config/envoyconfig/listeners_test.go @@ -109,7 +109,9 @@ func TestBuildListeners(t *testing.T) { hasQUIC = true httpConfig := gjson.Get(protojson.Format(li), "filterChains.0.filters.0.typedConfig") assert.Equal(t, "HTTP3", httpConfig.Get("codecType").String()) - assert.Equal(t, `{}`, httpConfig.Get("http3ProtocolOptions").String()) + assert.JSONEq(t, `{ + "allowExtendedConnect": true + }`, httpConfig.Get("http3ProtocolOptions").String()) } } diff --git a/config/envoyconfig/protocols.go b/config/envoyconfig/protocols.go index 2e2c8168a..a3c19ec32 100644 --- a/config/envoyconfig/protocols.go +++ b/config/envoyconfig/protocols.go @@ -67,6 +67,10 @@ func WithKeepalive(src *envoy_config_core_v3.Http2ProtocolOptions) *envoy_config return dst } +var http3ProtocolOptions = &envoy_config_core_v3.Http3ProtocolOptions{ + AllowExtendedConnect: true, +} + func buildTypedExtensionProtocolOptions( endpoints []Endpoint, upstreamProtocol upstreamProtocolConfig, diff --git a/config/envoyconfig/testdata/main_http_connection_manager_filter.json b/config/envoyconfig/testdata/main_http_connection_manager_filter.json index 65bac62c1..b67fa0d06 100644 --- a/config/envoyconfig/testdata/main_http_connection_manager_filter.json +++ b/config/envoyconfig/testdata/main_http_connection_manager_filter.json @@ -103,6 +103,9 @@ } } }, + "http2ProtocolOptions": { + "allowConnect": true + }, "localReplyConfig": { "mappers": [ {