Skip to content

Commit

Permalink
Disable Envoy removing TE request header
Browse files Browse the repository at this point in the history
Removal of the header was added by default in Envoy v1.29.0.
This change reverts back to prior behavior.

This change can be reverted once envoyproxy/envoy#32255 is
backported or present in a new release of Envoy.

Signed-off-by: Sunjay Bhatia <sunjayb@vmware.com>
  • Loading branch information
sunjayBhatia committed Mar 18, 2024
1 parent eb2ef2c commit 0cca764
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 12 deletions.
9 changes: 7 additions & 2 deletions internal/envoy/v3/runtime.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,13 @@ func RuntimeLayers(configurableRuntimeFields map[string]*structpb.Value) []*envo
func baseRuntimeLayer() *structpb.Struct {
return &structpb.Struct{
Fields: map[string]*structpb.Value{
"re2.max_program_size.error_level": structpb.NewNumberValue(maxRegexProgramSizeError),
"re2.max_program_size.warn_level": structpb.NewNumberValue(maxRegexProgramSizeWarn),
// Disable Envoy removing the TE/:te request header. Removing the header was
// added by default in Envoy v1.29.0.
// Can remove once https://github.com/envoyproxy/envoy/pull/32255 is backported or
// present in a new release of Envoy.
"envoy.reloadable_features.sanitize_te": structpb.NewBoolValue(false),
"re2.max_program_size.error_level": structpb.NewNumberValue(maxRegexProgramSizeError),
"re2.max_program_size.warn_level": structpb.NewNumberValue(maxRegexProgramSizeWarn),
},
}
}
5 changes: 3 additions & 2 deletions internal/envoy/v3/runtime_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,9 @@ func TestRuntimeLayers(t *testing.T) {
for name, tc := range testCases {
t.Run(name, func(t *testing.T) {
expectedFields := map[string]*structpb.Value{
"re2.max_program_size.error_level": structpb.NewNumberValue(1 << 20),
"re2.max_program_size.warn_level": structpb.NewNumberValue(1000),
"envoy.reloadable_features.sanitize_te": structpb.NewBoolValue(false),
"re2.max_program_size.error_level": structpb.NewNumberValue(1 << 20),
"re2.max_program_size.warn_level": structpb.NewNumberValue(1000),
}
for k, v := range tc.configurableFields {
expectedFields[k] = v
Expand Down
23 changes: 15 additions & 8 deletions internal/xdscache/v3/runtime_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,9 @@ func TestRuntimeCacheContents(t *testing.T) {
t.Run(name, func(t *testing.T) {
rc := NewRuntimeCache(tc.runtimeSettings)
fields := map[string]*structpb.Value{
"re2.max_program_size.error_level": structpb.NewNumberValue(1 << 20),
"re2.max_program_size.warn_level": structpb.NewNumberValue(1000),
"envoy.reloadable_features.sanitize_te": structpb.NewBoolValue(false),
"re2.max_program_size.error_level": structpb.NewNumberValue(1 << 20),
"re2.max_program_size.warn_level": structpb.NewNumberValue(1000),
}
for k, v := range tc.additionalFields {
fields[k] = v
Expand All @@ -82,8 +83,9 @@ func TestRuntimeCacheQuery(t *testing.T) {
Name: "dynamic",
Layer: &structpb.Struct{
Fields: map[string]*structpb.Value{
"re2.max_program_size.error_level": structpb.NewNumberValue(1 << 20),
"re2.max_program_size.warn_level": structpb.NewNumberValue(1000),
"envoy.reloadable_features.sanitize_te": structpb.NewBoolValue(false),
"re2.max_program_size.error_level": structpb.NewNumberValue(1 << 20),
"re2.max_program_size.warn_level": structpb.NewNumberValue(1000),
},
},
},
Expand Down Expand Up @@ -148,8 +150,9 @@ func TestRuntimeVisit(t *testing.T) {
Name: "dynamic",
Layer: &structpb.Struct{
Fields: map[string]*structpb.Value{
"re2.max_program_size.error_level": structpb.NewNumberValue(1 << 20),
"re2.max_program_size.warn_level": structpb.NewNumberValue(1000),
"envoy.reloadable_features.sanitize_te": structpb.NewBoolValue(false),
"re2.max_program_size.error_level": structpb.NewNumberValue(1 << 20),
"re2.max_program_size.warn_level": structpb.NewNumberValue(1000),
},
},
},
Expand Down Expand Up @@ -187,6 +190,7 @@ func TestRuntimeVisit(t *testing.T) {
Name: "dynamic",
Layer: &structpb.Struct{
Fields: map[string]*structpb.Value{
"envoy.reloadable_features.sanitize_te": structpb.NewBoolValue(false),
"envoy.resource_limits.listener.ingress_http.connection_limit": structpb.NewNumberValue(100),
"re2.max_program_size.error_level": structpb.NewNumberValue(1 << 20),
"re2.max_program_size.warn_level": structpb.NewNumberValue(1000),
Expand Down Expand Up @@ -231,6 +235,7 @@ func TestRuntimeVisit(t *testing.T) {
Name: "dynamic",
Layer: &structpb.Struct{
Fields: map[string]*structpb.Value{
"envoy.reloadable_features.sanitize_te": structpb.NewBoolValue(false),
"envoy.resource_limits.listener.ingress_http.connection_limit": structpb.NewNumberValue(100),
"envoy.resource_limits.listener.ingress_https.connection_limit": structpb.NewNumberValue(100),
"re2.max_program_size.error_level": structpb.NewNumberValue(1 << 20),
Expand Down Expand Up @@ -298,6 +303,7 @@ func TestRuntimeCacheOnChangeDelete(t *testing.T) {
Name: "dynamic",
Layer: &structpb.Struct{
Fields: map[string]*structpb.Value{
"envoy.reloadable_features.sanitize_te": structpb.NewBoolValue(false),
"envoy.resource_limits.listener.ingress_http.connection_limit": structpb.NewNumberValue(100),
"re2.max_program_size.error_level": structpb.NewNumberValue(1 << 20),
"re2.max_program_size.warn_level": structpb.NewNumberValue(1000),
Expand All @@ -312,8 +318,9 @@ func TestRuntimeCacheOnChangeDelete(t *testing.T) {
Name: "dynamic",
Layer: &structpb.Struct{
Fields: map[string]*structpb.Value{
"re2.max_program_size.error_level": structpb.NewNumberValue(1 << 20),
"re2.max_program_size.warn_level": structpb.NewNumberValue(1000),
"envoy.reloadable_features.sanitize_te": structpb.NewBoolValue(false),
"re2.max_program_size.error_level": structpb.NewNumberValue(1 << 20),
"re2.max_program_size.warn_level": structpb.NewNumberValue(1000),
},
},
},
Expand Down

0 comments on commit 0cca764

Please sign in to comment.