diff --git a/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/AbstractResponseBodySubscriber.java b/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/AbstractResponseBodySubscriber.java index 049d74b205d..ea8e28db060 100644 --- a/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/AbstractResponseBodySubscriber.java +++ b/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/AbstractResponseBodySubscriber.java @@ -101,6 +101,16 @@ abstract class AbstractResponseBodySubscriber implements Subscriber protected void receiveBuffer(DataBuffer dataBuffer) { Assert.state(this.currentBuffer == null); this.currentBuffer = dataBuffer; + + checkOnWritePossible(); + } + + /** + * Called when a {@link DataBuffer} is received via {@link Subscriber#onNext(Object)} + * or when only partial data from the {@link DataBuffer} was written. + */ + protected void checkOnWritePossible() { + // no-op } /** @@ -238,6 +248,7 @@ abstract class AbstractResponseBodySubscriber implements Subscriber } else { subscriber.changeState(WRITING, RECEIVED); + subscriber.checkOnWritePossible(); } } catch (IOException ex) { diff --git a/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/ServletHttpHandlerAdapter.java b/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/ServletHttpHandlerAdapter.java index 4314ec221e3..0416445ffa7 100644 --- a/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/ServletHttpHandlerAdapter.java +++ b/spring-web-reactive/src/main/java/org/springframework/http/server/reactive/ServletHttpHandlerAdapter.java @@ -233,9 +233,7 @@ public class ServletHttpHandlerAdapter extends HttpServlet { } @Override - protected void receiveBuffer(DataBuffer dataBuffer) { - super.receiveBuffer(dataBuffer); - + protected void checkOnWritePossible() { try { if (outputStream().isReady()) { onWritePossible();