Skip to content

Commit a331618

Browse files
authored
Prefer empty values from ValueFilter over request's header value in HeaderPropagation (#30931) #29773
1 parent dbd9044 commit a331618

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

src/Middleware/HeaderPropagation/src/HeaderPropagationMiddleware.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,7 @@ private static StringValues GetValue(HttpContext context, HeaderPropagationEntry
7676
context.Request.Headers.TryGetValue(entry.InboundHeaderName, out var value);
7777
if (entry.ValueFilter != null)
7878
{
79-
var filtered = entry.ValueFilter(new HeaderPropagationContext(context, entry.InboundHeaderName, value));
80-
if (!StringValues.IsNullOrEmpty(filtered))
81-
{
82-
value = filtered;
83-
}
79+
value = entry.ValueFilter(new HeaderPropagationContext(context, entry.InboundHeaderName, value));
8480
}
8581

8682
return value;

src/Middleware/HeaderPropagation/test/HeaderPropagationMiddlewareTest.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,20 @@ public async Task PreferValueFilter_OverRequestHeader()
157157
Assert.Equal("test", CapturedHeaders["in"]);
158158
}
159159

160+
[Fact]
161+
public async Task PreferEmptyValuesFromValueFilter_OverRequestHeader()
162+
{
163+
// Arrange
164+
Configuration.Headers.Add("in", (context) => StringValues.Empty);
165+
Context.Request.Headers.Add("in", "no");
166+
167+
// Act
168+
await Middleware.Invoke(Context);
169+
170+
// Assert
171+
Assert.DoesNotContain("in", CapturedHeaders.Keys);
172+
}
173+
160174
[Fact]
161175
public async Task EmptyValuesFromValueFilter_DoesNotAddIt()
162176
{

0 commit comments

Comments
 (0)