Skip to content

Commit d12e7bd

Browse files
lawrence3699coderaiser
authored andcommitted
fix: distribute: fix event listener leak on socket disconnect (#462)
1 parent b8a621c commit d12e7bd

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

server/distribute/import.js

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,14 @@ const addUrl = currify((url, a) => `${url}: ${a}`);
3838

3939
const rmListeners = wraptile((socket, listeners) => {
4040
socket.removeListener('connect', listeners.onConnect);
41+
socket.removeListener('accept', listeners.onAccept);
4142
socket.removeListener('config', listeners.onConfig);
4243
socket.removeListener('error', listeners.onError);
43-
socket.removeListener('connection_error', listeners.onError);
44+
socket.removeListener('connect_error', listeners.onConnectError);
45+
socket.removeListener('reject', listeners.onReject);
46+
47+
if (listeners.onChange)
48+
socket.removeListener('change', listeners.onChange);
4449
});
4550

4651
const canceled = (f) => f(null, {
@@ -106,25 +111,28 @@ export const distributeImport = (config, options, fn) => {
106111

107112
const onConnect = emitAuth(importUrl, config, socket);
108113
const onAccept = logWrapped(isLog, importStr, `${connectedStr} to ${colorUrl}`);
114+
const onChange = squad(logWrapped(isLog, importStr), config);
115+
116+
const onReject = squad(superFn('reject'), logWrapped(
117+
isLog,
118+
importStr,
119+
tokenRejectedStr,
120+
));
109121

110122
const onDisconnect = squad(...[
111123
done(fn, statusStore),
112124
logWrapped(isLog, importStr, `${disconnectedStr} from ${colorUrl}`),
113125
rmListeners(socket, {
114-
onError,
115126
onConnect,
127+
onAccept,
116128
onConfig,
129+
onError,
130+
onConnectError,
131+
onReject,
132+
onChange,
117133
}),
118134
]);
119135

120-
const onChange = squad(logWrapped(isLog, importStr), config);
121-
122-
const onReject = squad(superFn('reject'), logWrapped(
123-
isLog,
124-
importStr,
125-
tokenRejectedStr,
126-
));
127-
128136
socket.on('connect', onConnect);
129137
socket.on('accept', onAccept);
130138
socket.on('disconnect', onDisconnect);

0 commit comments

Comments
 (0)