Skip to content

Commit 83c19cd

Browse files
committed
Fix NPE when calling NettyHeadersAdapter.add()
Prior to this commit, the `NettyHeadersAdapter` would directly delegate the `add()` and `set()` calls to the adapted `io.netty.handler.codec.http.HttpHeaders`. This implementation rejects `null` values with exceptions. This commit aligns the behavior here with other implementations, by not rejecting null values but simply ignoring them. Fixes gh-26274
1 parent bcfbde9 commit 83c19cd

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

spring-web/src/main/java/org/springframework/http/client/reactive/NettyHeadersAdapter.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@ public String getFirst(String key) {
5656

5757
@Override
5858
public void add(String key, @Nullable String value) {
59-
this.headers.add(key, value);
59+
if (value != null) {
60+
this.headers.add(key, value);
61+
}
6062
}
6163

6264
@Override
@@ -71,7 +73,9 @@ public void addAll(MultiValueMap<String, String> values) {
7173

7274
@Override
7375
public void set(String key, @Nullable String value) {
74-
this.headers.set(key, value);
76+
if (value != null) {
77+
this.headers.set(key, value);
78+
}
7579
}
7680

7781
@Override

spring-web/src/main/java/org/springframework/http/server/reactive/NettyHeadersAdapter.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@ public String getFirst(String key) {
5656

5757
@Override
5858
public void add(String key, @Nullable String value) {
59-
this.headers.add(key, value);
59+
if (value != null) {
60+
this.headers.add(key, value);
61+
}
6062
}
6163

6264
@Override
@@ -71,7 +73,9 @@ public void addAll(MultiValueMap<String, String> values) {
7173

7274
@Override
7375
public void set(String key, @Nullable String value) {
74-
this.headers.set(key, value);
76+
if (value != null) {
77+
this.headers.set(key, value);
78+
}
7579
}
7680

7781
@Override

spring-web/src/test/java/org/springframework/http/server/reactive/HeadersAdaptersTests.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,14 @@ void putShouldOverrideExisting(String displayName, MultiValueMap<String, String>
9494
assertThat(headers.get("TestHeader").size()).isEqualTo(1);
9595
}
9696

97+
@ParameterizedHeadersTest
98+
void nullValuesShouldNotFail(String displayName, MultiValueMap<String, String> headers) {
99+
headers.add("TestHeader", null);
100+
assertThat(headers.getFirst("TestHeader")).isNull();
101+
headers.set("TestHeader", null);
102+
assertThat(headers.getFirst("TestHeader")).isNull();
103+
}
104+
97105
@Retention(RetentionPolicy.RUNTIME)
98106
@Target(ElementType.METHOD)
99107
@ParameterizedTest(name = "[{index}] {0}")

0 commit comments

Comments
 (0)