mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-07-17 16:38:18 +00:00
fix: distribute: fix event listener leak on socket disconnect (#462)
This commit is contained in:
parent
b8a621ca1b
commit
d12e7bd0c5
1 changed files with 20 additions and 12 deletions
|
|
@ -38,9 +38,14 @@ const addUrl = currify((url, a) => `${url}: ${a}`);
|
|||
|
||||
const rmListeners = wraptile((socket, listeners) => {
|
||||
socket.removeListener('connect', listeners.onConnect);
|
||||
socket.removeListener('accept', listeners.onAccept);
|
||||
socket.removeListener('config', listeners.onConfig);
|
||||
socket.removeListener('error', listeners.onError);
|
||||
socket.removeListener('connection_error', listeners.onError);
|
||||
socket.removeListener('connect_error', listeners.onConnectError);
|
||||
socket.removeListener('reject', listeners.onReject);
|
||||
|
||||
if (listeners.onChange)
|
||||
socket.removeListener('change', listeners.onChange);
|
||||
});
|
||||
|
||||
const canceled = (f) => f(null, {
|
||||
|
|
@ -106,17 +111,6 @@ export const distributeImport = (config, options, fn) => {
|
|||
|
||||
const onConnect = emitAuth(importUrl, config, socket);
|
||||
const onAccept = logWrapped(isLog, importStr, `${connectedStr} to ${colorUrl}`);
|
||||
|
||||
const onDisconnect = squad(...[
|
||||
done(fn, statusStore),
|
||||
logWrapped(isLog, importStr, `${disconnectedStr} from ${colorUrl}`),
|
||||
rmListeners(socket, {
|
||||
onError,
|
||||
onConnect,
|
||||
onConfig,
|
||||
}),
|
||||
]);
|
||||
|
||||
const onChange = squad(logWrapped(isLog, importStr), config);
|
||||
|
||||
const onReject = squad(superFn('reject'), logWrapped(
|
||||
|
|
@ -125,6 +119,20 @@ export const distributeImport = (config, options, fn) => {
|
|||
tokenRejectedStr,
|
||||
));
|
||||
|
||||
const onDisconnect = squad(...[
|
||||
done(fn, statusStore),
|
||||
logWrapped(isLog, importStr, `${disconnectedStr} from ${colorUrl}`),
|
||||
rmListeners(socket, {
|
||||
onConnect,
|
||||
onAccept,
|
||||
onConfig,
|
||||
onError,
|
||||
onConnectError,
|
||||
onReject,
|
||||
onChange,
|
||||
}),
|
||||
]);
|
||||
|
||||
socket.on('connect', onConnect);
|
||||
socket.on('accept', onAccept);
|
||||
socket.on('disconnect', onDisconnect);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue