From 665cc7e10361fcdd8026b2959ba607fba5d9324e Mon Sep 17 00:00:00 2001 From: Tommaso Allevi Date: Thu, 24 Sep 2015 17:27:05 +0200 Subject: [PATCH 1/2] Add a ecurity guard on socket 'error' event --- lib/gearmanode/job-server.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/gearmanode/job-server.js b/lib/gearmanode/job-server.js index 3afd62b..ee438d9 100644 --- a/lib/gearmanode/job-server.js +++ b/lib/gearmanode/job-server.js @@ -110,6 +110,7 @@ JobServer.prototype.connect = function (callback) { // emitted when an error occurs this.socket.on('error', function (err) { JobServer.logger.log('error', 'socket error:', err); + var connected = self.connected; // ensures that no more I/O activity happens on this socket self.socket.destroy(); @@ -122,7 +123,9 @@ JobServer.prototype.connect = function (callback) { self.clientOrWorker.emit('socketError', self.getUid(), err); // trigger event self.disconnect(err); - callback(err); + if (!connected) { + callback(err); + } }); this.socket.on('data', function (chunk) { From 8a44742d8bda8be744f40ea2d0bac23cca44ab5e Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 27 May 2016 10:33:16 +0200 Subject: [PATCH 2/2] Allow to add an error handler to the job --- lib/gearmanode/client.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/gearmanode/client.js b/lib/gearmanode/client.js index 6bcab48..bbf1a29 100644 --- a/lib/gearmanode/client.js +++ b/lib/gearmanode/client.js @@ -168,7 +168,8 @@ Client.prototype.submitJob = function(name, payload, options) { jobServer.send(packet, jsSendCallback); } - tryToSend(); + // Allow to add an handler to the job on 'error' event + process.nextTick(tryToSend); return job; }