diff --git a/envoy/api/v3alpha/cds.proto b/envoy/api/v3alpha/cds.proto index adae481c..ab7fa9dd 100644 --- a/envoy/api/v3alpha/cds.proto +++ b/envoy/api/v3alpha/cds.proto @@ -586,8 +586,8 @@ message Cluster { // verification. auth.UpstreamTlsContext tls_context = 11; - // Additional options when handling HTTP requests. These options will be applicable to both - // HTTP1 and HTTP2 requests. + // Additional options when handling HTTP requests upstream. These options will be applicable to + // both HTTP1 and HTTP2 requests. core.HttpProtocolOptions common_http_protocol_options = 29; // Additional options when handling HTTP1 requests. diff --git a/envoy/api/v3alpha/core/protocol.proto b/envoy/api/v3alpha/core/protocol.proto index e9761292..95890ed1 100644 --- a/envoy/api/v3alpha/core/protocol.proto +++ b/envoy/api/v3alpha/core/protocol.proto @@ -18,11 +18,19 @@ message TcpProtocolOptions { } message HttpProtocolOptions { - // The idle timeout for upstream connection pool connections. The idle timeout is defined as the + // The idle timeout for connections. The idle timeout is defined as the // period in which there are no active requests. If not set, there is no idle timeout. When the - // idle timeout is reached the connection will be closed. Note that request based timeouts mean - // that HTTP/2 PINGs will not keep the connection alive. + // idle timeout is reached the connection will be closed. If the connection is an HTTP/2 + // downstream connection a drain sequence will occur prior to closing the connection, see + // :ref:`drain_timeout + // `. + // Note that request based timeouts mean that HTTP/2 PINGs will not keep the connection alive. google.protobuf.Duration idle_timeout = 1; + + // The maximum number of headers. If unconfigured, the default + // maximum number of request headers allowed is 100. Requests that exceed this limit will receive + // a 431 response for HTTP/1.x and cause a stream reset for HTTP/2. + google.protobuf.UInt32Value max_headers_count = 2 [(validate.rules).uint32 = {gte: 1}]; } message Http1ProtocolOptions { diff --git a/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto b/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto index 8efeba2d..6f4132e9 100644 --- a/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto +++ b/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto @@ -241,7 +241,7 @@ message HttpConnectionManager { // Additional settings for HTTP requests handled by the connection manager. These will be // applicable to both HTTP1 and HTTP2 requests. - envoy.api.v2.core.HttpProtocolOptions common_http_protocol_options = 35; + api.v2.core.HttpProtocolOptions common_http_protocol_options = 35; // Additional HTTP/1 settings that are passed to the HTTP/1 codec. api.v2.core.Http1ProtocolOptions http_protocol_options = 8; diff --git a/envoy/config/filter/network/http_connection_manager/v3alpha/http_connection_manager.proto b/envoy/config/filter/network/http_connection_manager/v3alpha/http_connection_manager.proto index 26ab41dd..546b1e74 100644 --- a/envoy/config/filter/network/http_connection_manager/v3alpha/http_connection_manager.proto +++ b/envoy/config/filter/network/http_connection_manager/v3alpha/http_connection_manager.proto @@ -23,7 +23,7 @@ import "validate/validate.proto"; // [#protodoc-title: HTTP connection manager] // HTTP connection manager :ref:`configuration overview `. -// [#comment:next free field: 35] +// [#comment:next free field: 36] message HttpConnectionManager { enum CodecType { // For every new connection, the connection manager will determine which @@ -194,7 +194,9 @@ message HttpConnectionManager { google.protobuf.BoolValue enabled = 3; } - reserved 27; + reserved 27, 11; + + reserved "idle_timeout"; // Supplies the type of codec that the connection manager should use. CodecType codec_type = 1 [(validate.rules).enum = {defined_only: true}]; @@ -234,6 +236,10 @@ message HttpConnectionManager { // `. Tracing tracing = 7; + // Additional settings for HTTP requests handled by the connection manager. These will be + // applicable to both HTTP1 and HTTP2 requests. + api.v3alpha.core.HttpProtocolOptions common_http_protocol_options = 35; + // Additional HTTP/1 settings that are passed to the HTTP/1 codec. api.v3alpha.core.Http1ProtocolOptions http_protocol_options = 8; @@ -258,15 +264,6 @@ message HttpConnectionManager { google.protobuf.UInt32Value max_request_headers_kb = 29 [(validate.rules).uint32 = {lte: 96 gt: 0}]; - // The idle timeout for connections managed by the connection manager. The - // idle timeout is defined as the period in which there are no active - // requests. If not set, there is no idle timeout. When the idle timeout is - // reached the connection will be closed. If the connection is an HTTP/2 - // connection a drain sequence will occur prior to closing the connection. See - // :ref:`drain_timeout - // `. - google.protobuf.Duration idle_timeout = 11; - // The stream idle timeout for connections managed by the connection manager. // If not specified, this defaults to 5 minutes. The default value was selected // so as not to interfere with any smaller configured timeouts that may have