mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-20 15:30:39 +01:00
fix: socket.io methods calling callbacks twice if method returns promise
This commit is contained in:
@@ -131,7 +131,6 @@ function onMessage(socket, payload) {
|
||||
return socket.disconnect();
|
||||
}
|
||||
|
||||
var cbCalled = false;
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
checkMaintenance(socket, next);
|
||||
@@ -147,19 +146,20 @@ function onMessage(socket, payload) {
|
||||
}
|
||||
},
|
||||
function (next) {
|
||||
const returned = methodToCall(socket, params, next);
|
||||
let callbackCalled = false;
|
||||
function nextOnce(err, res) {
|
||||
if (callbackCalled) { return; }
|
||||
callbackCalled = true;
|
||||
next(err, res);
|
||||
}
|
||||
const returned = methodToCall(socket, params, nextOnce);
|
||||
if (returned && typeof returned.then === 'function') {
|
||||
returned.then((payload) => {
|
||||
next(null, payload);
|
||||
nextOnce(null, payload);
|
||||
}, next);
|
||||
}
|
||||
},
|
||||
], function (err, result) {
|
||||
if (cbCalled) {
|
||||
return;
|
||||
}
|
||||
|
||||
cbCalled = true;
|
||||
callback(err ? { message: err.message } : null, result);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user