diff --git a/pkg/responsemodifiers/response_modifier.go b/pkg/responsemodifiers/response_modifier.go index 3fec88043..b6bd351be 100644 --- a/pkg/responsemodifiers/response_modifier.go +++ b/pkg/responsemodifiers/response_modifier.go @@ -45,7 +45,10 @@ func (f *Builder) Build(ctx context.Context, names []string) func(*http.Response for _, name := range conf.Chain.Middlewares { qualifiedNames = append(qualifiedNames, provider.GetQualifiedName(chainCtx, name)) } - modifiers = append(modifiers, f.Build(ctx, qualifiedNames)) + + if rm := f.Build(ctx, qualifiedNames); rm != nil { + modifiers = append(modifiers, rm) + } } } diff --git a/pkg/responsemodifiers/response_modifier_test.go b/pkg/responsemodifiers/response_modifier_test.go index 9854e5725..7b3822831 100644 --- a/pkg/responsemodifiers/response_modifier_test.go +++ b/pkg/responsemodifiers/response_modifier_test.go @@ -169,6 +169,21 @@ func TestBuilderBuild(t *testing.T) { }, assertResponse: func(t *testing.T, resp *http.Response) {}, }, + + { + desc: "chain without headers", + middlewares: []string{"chain"}, + buildResponse: stubResponse, + conf: map[string]*dynamic.Middleware{ + "foo": {IPWhiteList: &dynamic.IPWhiteList{}}, + "chain": { + Chain: &dynamic.Chain{ + Middlewares: []string{"foo"}, + }, + }, + }, + assertResponse: func(t *testing.T, resp *http.Response) {}, + }, } for _, test := range testCases {