Defer cleanup in DefaultServerWebExchange
This commit ensures that the multipartRead flag is read in a deferred block, and is not evaluated too early. Closes gh-31567
This commit is contained in:
parent
7f94c64b72
commit
dc26d3b0ec
|
|
@ -247,18 +247,20 @@ public class DefaultServerWebExchange implements ServerWebExchange {
|
|||
|
||||
@Override
|
||||
public Mono<Void> cleanupMultipart() {
|
||||
if (this.multipartRead) {
|
||||
return getMultipartData()
|
||||
.onErrorResume(t -> Mono.empty()) // ignore errors reading multipart data
|
||||
.flatMapIterable(Map::values)
|
||||
.flatMapIterable(Function.identity())
|
||||
.flatMap(part -> part.delete()
|
||||
.onErrorResume(ex -> Mono.empty()))
|
||||
.then();
|
||||
}
|
||||
else {
|
||||
return Mono.empty();
|
||||
}
|
||||
return Mono.defer(() -> {
|
||||
if (this.multipartRead) {
|
||||
return getMultipartData()
|
||||
.onErrorComplete()
|
||||
.flatMapIterable(Map::values)
|
||||
.flatMapIterable(Function.identity())
|
||||
.flatMap(part -> part.delete()
|
||||
.onErrorComplete())
|
||||
.then();
|
||||
}
|
||||
else {
|
||||
return Mono.empty();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
Loading…
Reference in New Issue