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 fdfc577ef89..57510a9c094 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; } @@ -151,6 +154,18 @@ public class ServletServerHttpResponse extends AbstractListenerServerHttpRespons } } + /** Handle a timeout/error callback from the Servlet container */ + void handleAsyncListenerError(Throwable ex) { + if (this.bodyFlushProcessor != null) { + this.bodyFlushProcessor.cancel(); + this.bodyFlushProcessor.onError(ex); + } + if (this.bodyProcessor != null) { + this.bodyProcessor.cancel(); + this.bodyProcessor.onError(ex); + } + } + private class ResponseBodyProcessor extends AbstractResponseBodyProcessor {