Skip to content

Commit 0e274ac

Browse files
committed
[minor] Skip unnecessary operations if the socket is already closed
There is no need to remove the already removed `socketOnData` listener, resume the socket, and call `websocket.close()` if the socket is already closed.
1 parent 075752d commit 0e274ac

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

lib/websocket.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -918,13 +918,15 @@ function sendAfterClose(websocket, data, cb) {
918918
function receiverOnConclude(code, reason) {
919919
const websocket = this[kWebSocket];
920920

921-
websocket._socket.removeListener('data', socketOnData);
922-
process.nextTick(resume, websocket._socket);
923-
924921
websocket._closeFrameReceived = true;
925922
websocket._closeMessage = reason;
926923
websocket._closeCode = code;
927924

925+
if (websocket._socket[kWebSocket] === undefined) return;
926+
927+
websocket._socket.removeListener('data', socketOnData);
928+
process.nextTick(resume, websocket._socket);
929+
928930
if (code === 1005) websocket.close();
929931
else websocket.close(code, reason);
930932
}
@@ -947,15 +949,18 @@ function receiverOnDrain() {
947949
function receiverOnError(err) {
948950
const websocket = this[kWebSocket];
949951

950-
websocket._socket.removeListener('data', socketOnData);
952+
if (websocket._socket[kWebSocket] !== undefined) {
953+
websocket._socket.removeListener('data', socketOnData);
951954

952-
//
953-
// On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See
954-
// https://github.com/websockets/ws/issues/1940.
955-
//
956-
process.nextTick(resume, websocket._socket);
955+
//
956+
// On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See
957+
// https://github.com/websockets/ws/issues/1940.
958+
//
959+
process.nextTick(resume, websocket._socket);
960+
961+
websocket.close(err[kStatusCode]);
962+
}
957963

958-
websocket.close(err[kStatusCode]);
959964
websocket.emit('error', err);
960965
}
961966

0 commit comments

Comments
 (0)