generic proxy: complete the development of HTTP1 codec (#32488)
* generic proxy: complete the development of HTTP1 codec Signed-off-by: wbpcode <wbphub@live.com> * minor update Signed-off-by: wbpcode <wbphub@live.com> * add TODOs Signed-off-by: wbpcode <wbphub@live.com> * more validation and single frame mode for HTTP Signed-off-by: wbpcode <wbphub@live.com> * more test and validation Signed-off-by: wbpcode <wbphub@live.com> * handle the 100 continue and the 1xx response Signed-off-by: wbpcode <wbphub@live.com> * minor update Signed-off-by: wbpcode <wbphub@live.com> * address comments Signed-off-by: wbpcode <wbphub@live.com> * address comments Signed-off-by: wbpcode <wbphub@live.com> --------- Signed-off-by: wbpcode <wbphub@live.com> Mirrored from https://github.com/envoyproxy/envoy @ ffcc257e16c9046b2fec7497a6bf9293d8ada286main
parent
2be31771be
commit
153c499e33
4 changed files with 63 additions and 0 deletions
@ -0,0 +1,12 @@ |
||||
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. |
||||
|
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package( |
||||
deps = [ |
||||
"@com_github_cncf_xds//udpa/annotations:pkg", |
||||
"@com_github_cncf_xds//xds/annotations/v3:pkg", |
||||
], |
||||
) |
@ -0,0 +1,49 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.extensions.filters.network.generic_proxy.codecs.http1.v3; |
||||
|
||||
import "google/protobuf/wrappers.proto"; |
||||
|
||||
import "xds/annotations/v3/status.proto"; |
||||
|
||||
import "udpa/annotations/status.proto"; |
||||
|
||||
option java_package = "io.envoyproxy.envoy.extensions.filters.network.generic_proxy.codecs.http1.v3"; |
||||
option java_outer_classname = "Http1Proto"; |
||||
option java_multiple_files = true; |
||||
option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/generic_proxy/codecs/http1/v3;http1v3"; |
||||
option (udpa.annotations.file_status).package_version_status = ACTIVE; |
||||
option (xds.annotations.v3.file_status).work_in_progress = true; |
||||
|
||||
// [#protodoc-title: HTTP1 codec configuration for Generic Proxy] |
||||
// [#extension: envoy.generic_proxy.codecs.http1] |
||||
|
||||
// Configuration for HTTP codec. This HTTP1 codec is used to parse and serialize HTTP1 messages |
||||
// for the generic proxy filter. |
||||
// Any decoding error will result in the generic proxy closing the connection. |
||||
// |
||||
// .. note:: |
||||
// This codec only supports HTTP1.1 messages and does not support HTTP1.0 messages. And it limits |
||||
// part of the HTTP1.1 features, such as upgrade, connect, etc. |
||||
// This codec is mainly designed for the features evaluation of the generic proxy filter. Please |
||||
// be cautious when using it in production. |
||||
message Http1CodecConfig { |
||||
// If true, the codec will parse and serialize HTTP1 messages in a single frame per message. |
||||
// |
||||
// A frame is a minimal unit of data that can be processed by the generic proxy. If false, the |
||||
// codec will parse and serialize HTTP1 messages in a streaming way. In this case, the codec |
||||
// will output multiple frames for a single HTTP1 message to the generic proxy. |
||||
// If true, the codec will buffer the entire HTTP1 message body before sending it to the generic |
||||
// proxy. This may have better performance in small message scenarios and is more friendly to |
||||
// handle the HTTP1 message body. This also may result in higher memory usage and latency if |
||||
// the message body is large. |
||||
// |
||||
// Default is true. |
||||
google.protobuf.BoolValue single_frame_mode = 1; |
||||
|
||||
// The maximum size of the HTTP1 message body in bytes. If not set, 8*1024*1024 (8MB) is used. |
||||
// This only makes sense when single_frame_mode is true. |
||||
// If the HTTP1 message body size exceeds this value, this will result in a decoding error |
||||
// and the generic proxy will close the connection. |
||||
google.protobuf.UInt32Value max_buffer_size = 2; |
||||
} |
Loading…
Reference in new issue