diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractResponseBodyFlushProcessor.java b/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractResponseBodyFlushProcessor.java index fdfc577ef8..57510a9c09 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractResponseBodyFlushProcessor.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/AbstractResponseBodyFlushProcessor.java @@ -120,7 +120,7 @@ abstract class AbstractResponseBodyFlushProcessor implements Processor, Void> createBodyFlushProcessor() { - Processor, Void> processor = new ResponseBodyFlushProcessor(); + ResponseBodyFlushProcessor processor = new ResponseBodyFlushProcessor(); registerListener(); + bodyFlushProcessor = processor; return processor; } @@ -152,6 +155,18 @@ public class ServletServerHttpResponse extends AbstractListenerServerHttpRespons } + void onError(Throwable t) { + if (bodyFlushProcessor != null) { + bodyFlushProcessor.cancel(); + bodyFlushProcessor.onError(t); + } + if (bodyProcessor != null) { + bodyProcessor.cancel(); + bodyProcessor.onError(t); + } + } + + private class ResponseBodyProcessor extends AbstractResponseBodyProcessor { private final ServletOutputStream outputStream;