Skip to content

Commit b5b51e7

Browse files
committed
Merge branch '5.3.x'
2 parents 0ebc86c + 4c0ece9 commit b5b51e7

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

spring-web/src/main/java/org/springframework/http/codec/multipart/PartGenerator.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -688,6 +688,16 @@ public void body(DataBuffer dataBuffer) {
688688
@Override
689689
public void onComplete() {
690690
this.completed = true;
691+
public void partComplete(boolean finalPart) {
692+
State state = PartGenerator.this.state.get();
693+
// writeComplete might have changed our state to IdleFileState
694+
if (state != this) {
695+
state.partComplete(finalPart);
696+
}
697+
else {
698+
this.completed = true;
699+
this.finalPart = finalPart;
700+
}
691701
}
692702

693703
public void writeBuffer(DataBuffer dataBuffer) {
@@ -711,14 +721,16 @@ public void writeBuffers(Iterable<DataBuffer> dataBuffers) {
711721

712722
private void writeComplete() {
713723
IdleFileState newState = new IdleFileState(this);
714-
if (this.completed) {
715-
newState.onComplete();
716-
}
717-
else if (this.disposed) {
724+
if (this.disposed) {
718725
newState.dispose();
719726
}
720727
else if (changeState(this, newState)) {
721-
requestToken();
728+
if (this.completed) {
729+
newState.partComplete(this.finalPart);
730+
}
731+
else {
732+
requestToken();
733+
}
722734
}
723735
else {
724736
MultipartUtils.closeChannel(this.channel);

0 commit comments

Comments
 (0)