@@ -76,6 +76,19 @@ public void writeAndAutoFlushOnComplete() {
76
76
.verify (Duration .ofSeconds (5L ));
77
77
}
78
78
79
+ @ Test // SPR-14992
80
+ public void writeAndAutoFlushBeforeComplete () {
81
+ ClientRequest <Void > request = ClientRequest .GET ("http://localhost:" + port + "/write-and-never-complete" ).build ();
82
+ Flux <String > result = this .webClient
83
+ .exchange (request )
84
+ .flatMap (response -> response .bodyToFlux (String .class ));
85
+
86
+ StepVerifier .create (result )
87
+ .expectNextMatches (s -> s .startsWith ("0123456789" ))
88
+ .thenCancel ()
89
+ .verify (Duration .ofSeconds (5L ));
90
+ }
91
+
79
92
@ Override
80
93
protected HttpHandler createHttpHandler () {
81
94
return new FlushingHandler ();
@@ -95,13 +108,21 @@ public Mono<Void> handle(ServerHttpRequest request, ServerHttpResponse response)
95
108
responseBody = responseBody .concatWith (Flux .never ());
96
109
return response .writeAndFlushWith (responseBody );
97
110
}
98
- else if (path .endsWith ("write-and-complete" )){
111
+ else if (path .endsWith ("write-and-complete" )) {
99
112
Flux <DataBuffer > responseBody = Flux
100
113
.just ("0123456789" )
101
114
.repeat (20000 )
102
115
.map (value -> toDataBuffer (value , response .bufferFactory ()));
103
116
return response .writeWith (responseBody );
104
117
}
118
+ else if (path .endsWith ("write-and-never-complete" )) {
119
+ Flux <DataBuffer > responseBody = Flux
120
+ .just ("0123456789" )
121
+ .repeat (20000 )
122
+ .map (value -> toDataBuffer (value , response .bufferFactory ()))
123
+ .mergeWith (Flux .never ());
124
+ return response .writeWith (responseBody );
125
+ }
105
126
return response .writeWith (Flux .empty ());
106
127
}
107
128
0 commit comments