diff --git a/router/core/header_rule_engine.go b/router/core/header_rule_engine.go index bd7635a65d..60f98207b0 100644 --- a/router/core/header_rule_engine.go +++ b/router/core/header_rule_engine.go @@ -76,6 +76,9 @@ func WithResponseHeaderPropagation(ctx *resolve.Context) *resolve.Context { } func getResponseHeaderPropagation(ctx context.Context) *responseHeaderPropagation { + if ctx == nil { + return nil + } v := ctx.Value(responseHeaderPropagationKey{}) if v == nil { return nil diff --git a/router/core/header_rule_engine_test.go b/router/core/header_rule_engine_test.go index 6a8f2711f5..7f00105c1c 100644 --- a/router/core/header_rule_engine_test.go +++ b/router/core/header_rule_engine_test.go @@ -336,6 +336,16 @@ func TestPropagatedHeaders(t *testing.T) { }) } +func TestGetResponseHeaderPropagation_NilContext(t *testing.T) { + t.Parallel() + + // Ensure nil context does not panic (regression test for #2530) + assert.NotPanics(t, func() { + result := getResponseHeaderPropagation(nil) + assert.Nil(t, result) + }) +} + func TestNewHeaderPropagation(t *testing.T) { t.Parallel()