diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/HttpHeadResponseDecorator.java b/spring-web/src/main/java/org/springframework/http/server/reactive/HttpHeadResponseDecorator.java index 4935e3222e..b52a38f722 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/HttpHeadResponseDecorator.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/HttpHeadResponseDecorator.java @@ -56,7 +56,9 @@ public class HttpHeadResponseDecorator extends ServerHttpResponseDecorator { .then(); } else { - return Flux.from(body).then(); + return Flux.from(body) + .doOnNext(DataBufferUtils::release) + .then(); } } diff --git a/spring-web/src/test/java/org/springframework/http/server/reactive/HttpHeadResponseDecoratorTests.java b/spring-web/src/test/java/org/springframework/http/server/reactive/HttpHeadResponseDecoratorTests.java index 36ca9a5b93..d98b19356f 100644 --- a/spring-web/src/test/java/org/springframework/http/server/reactive/HttpHeadResponseDecoratorTests.java +++ b/spring-web/src/test/java/org/springframework/http/server/reactive/HttpHeadResponseDecoratorTests.java @@ -66,8 +66,9 @@ public class HttpHeadResponseDecoratorTests { @Test // gh-25908 public void writeWithGivenTransferEncoding() { + Flux body = Flux.just(toDataBuffer("data1"), toDataBuffer("data2")); this.response.getHeaders().add(HttpHeaders.TRANSFER_ENCODING, "chunked"); - this.response.writeWith(Flux.empty()).block(); + this.response.writeWith(body).block(); assertThat(this.response.getHeaders().getContentLength()).isEqualTo(-1); }