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
|
@Override
|
||||||
public Mono<Void> cleanupMultipart() {
|
public Mono<Void> cleanupMultipart() {
|
||||||
|
return Mono.defer(() -> {
|
||||||
if (this.multipartRead) {
|
if (this.multipartRead) {
|
||||||
return getMultipartData()
|
return getMultipartData()
|
||||||
.onErrorResume(t -> Mono.empty()) // ignore errors reading multipart data
|
.onErrorComplete()
|
||||||
.flatMapIterable(Map::values)
|
.flatMapIterable(Map::values)
|
||||||
.flatMapIterable(Function.identity())
|
.flatMapIterable(Function.identity())
|
||||||
.flatMap(part -> part.delete()
|
.flatMap(part -> part.delete()
|
||||||
.onErrorResume(ex -> Mono.empty()))
|
.onErrorComplete())
|
||||||
.then();
|
.then();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return Mono.empty();
|
return Mono.empty();
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue