diff --git a/lib/heartbeat.js b/lib/heartbeat.js index 027fc966149e979858af97fb5c5d420fe2ef894f..209bc9ed32869a035602d7c892fe7aec0b68ce93 100644 --- a/lib/heartbeat.js +++ b/lib/heartbeat.js @@ -92,11 +92,16 @@ var check = exports.check = function(url, cb) { var shortname = url.host + ':' + url.port; + var timeoutHandle = setTimeout(function() { + req.abort(); + }, checkTimeout); + var req = require(url.scheme).get({ host: url.host, port: url.port, path: exports.path }, function (res) { + clearTimeout(timeoutHandle); if (res.statusCode === 200) cb(true); else { logger.error("non-200 response from " + shortname + ". fatal! (" + res.statusCode + ")"); @@ -104,14 +109,8 @@ var check = exports.check = function(url, cb) { } }); req.on('error', function (e) { + clearTimeout(timeoutHandle); logger.error("can't communicate with " + shortname + ". fatal: " + e); cb(false, e); }); - req.on('connect', function (socket) { - socket.setTimeout(checkTimeout); - socket.on('timeout', function() { - req.abort(); - cb(false, "timeout"); - }); - }); };