Skip to content

Commit c60cb2d

Browse files
committed
[SCB-2894] add closeStatusCode null check
1 parent 81c2554 commit c60cb2d

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/ws/AbstractBaseWebSocket.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,18 @@
1919

2020
import java.util.concurrent.CompletableFuture;
2121

22+
import org.slf4j.Logger;
23+
import org.slf4j.LoggerFactory;
24+
2225
import io.netty.handler.codec.http.websocketx.WebSocketCloseStatus;
2326

2427
/**
2528
* AbstractBaseWebSocket
2629
*/
2730
public abstract class AbstractBaseWebSocket implements WebSocket {
31+
32+
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractBaseWebSocket.class);
33+
2834
private WebSocketAdapter webSocketAdapter;
2935

3036
private Status status = Status.CREATED;
@@ -53,6 +59,11 @@ public CompletableFuture<Void> close() {
5359

5460
@Override
5561
public CompletableFuture<Void> close(Short closeStatusCode, String closeReason) {
62+
if (closeStatusCode == null || closeReason == null) {
63+
LOGGER.error("a WebSocket is closed by null closeStatusCode or closeReason");
64+
closeStatusCode = (short) WebSocketCloseStatus.INTERNAL_SERVER_ERROR.code();
65+
closeReason = WebSocketCloseStatus.INTERNAL_SERVER_ERROR.reasonText();
66+
}
5667
synchronized (this) {
5768
if (status == Status.WAITING_TO_CLOSE || status == Status.CLOSING || status == Status.CLOSED) {
5869
return CompletableFuture.completedFuture(null);
@@ -65,8 +76,8 @@ public CompletableFuture<Void> close(Short closeStatusCode, String closeReason)
6576
closeFuture = new CompletableFuture<>();
6677
return closeFuture;
6778
}
79+
status = Status.CLOSING;
6880
}
69-
status = Status.CLOSING;
7081
return webSocketAdapter.close(closeStatusCode, closeReason)
7182
.whenComplete((v, t) -> status = Status.CLOSED);
7283
}

0 commit comments

Comments
 (0)