diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/WriteResultPublisher.java b/spring-web/src/main/java/org/springframework/http/server/reactive/WriteResultPublisher.java index 5636a9faa0fd..523050a37a8f 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/WriteResultPublisher.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/WriteResultPublisher.java @@ -175,6 +175,9 @@ void subscribe(WriteResultPublisher publisher, Subscriber subscrib @Override void publishComplete(WriteResultPublisher publisher) { publisher.completedBeforeSubscribed = true; + if(State.SUBSCRIBED.equals(publisher.state.get())) { + publisher.state.get().publishComplete(publisher); + } } @Override void publishError(WriteResultPublisher publisher, Throwable ex) { @@ -190,6 +193,9 @@ void request(WriteResultPublisher publisher, long n) { @Override void publishComplete(WriteResultPublisher publisher) { publisher.completedBeforeSubscribed = true; + if(State.SUBSCRIBED.equals(publisher.state.get())) { + publisher.state.get().publishComplete(publisher); + } } @Override void publishError(WriteResultPublisher publisher, Throwable ex) {