From 431ec906c4e301a8b88373e5ce3f2d884ad96b70 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Tue, 13 Oct 2020 23:38:59 +0100 Subject: [PATCH] Ensure buffers released in HttpHeadResponseDecorator See gh-25908 --- .../http/server/reactive/HttpHeadResponseDecorator.java | 4 +++- .../http/server/reactive/HttpHeadResponseDecoratorTests.java | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) 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); }