diff --git a/server/ping-lite.js b/server/ping-lite.js index 6d03e1607..ad0f22d33 100644 --- a/server/ping-lite.js +++ b/server/ping-lite.js @@ -7,10 +7,11 @@ const spawn = require("child_process").spawn, WIN = /^win/.test(process.platform), LIN = /^linux/.test(process.platform), MAC = /^darwin/.test(process.platform); +const { debug } = require("../src/util"); module.exports = Ping; -function Ping(host, options) { +function Ping (host, options) { if (!host) { throw new Error("You must specify a host to ping!"); } @@ -65,9 +66,9 @@ Ping.prototype.__proto__ = events.EventEmitter.prototype; // SEND A PING // =========== -Ping.prototype.send = function(callback) { +Ping.prototype.send = function (callback) { let self = this; - callback = callback || function(err, ms) { + callback = callback || function (err, ms) { if (err) { return self.emit("error", err); } @@ -78,34 +79,34 @@ Ping.prototype.send = function(callback) { this._ping = spawn(this._bin, this._args); // spawn the binary - this._ping.on("error", function(err) { // handle binary errors + this._ping.on("error", function (err) { // handle binary errors _errored = true; callback(err); }); - this._ping.stdout.on("data", function(data) { // log stdout + this._ping.stdout.on("data", function (data) { // log stdout this._stdout = (this._stdout || "") + data; }); - this._ping.stdout.on("end", function() { + this._ping.stdout.on("end", function () { _ended = true; if (_exited && !_errored) { onEnd.call(self._ping); } }); - this._ping.stderr.on("data", function(data) { // log stderr + this._ping.stderr.on("data", function (data) { // log stderr this._stderr = (this._stderr || "") + data; }); - this._ping.on("exit", function(code) { // handle complete + this._ping.on("exit", function (code) { // handle complete _exited = true; if (_ended && !_errored) { onEnd.call(self._ping); } }); - function onEnd() { + function onEnd () { let stdout = this.stdout._stdout, stderr = this.stderr._stderr, ms; @@ -121,15 +122,19 @@ Ping.prototype.send = function(callback) { ms = stdout.match(self._regmatch); // parse out the ##ms response ms = (ms && ms[1]) ? Number(ms[1]) : ms; + if (! ms) { + debug(stdout) + } + callback(null, ms, stdout); } }; // CALL Ping#send(callback) ON A TIMER // =================================== -Ping.prototype.start = function(callback) { +Ping.prototype.start = function (callback) { let self = this; - this._i = setInterval(function() { + this._i = setInterval(function () { self.send(callback); }, (self._options.interval || 5000)); self.send(callback); @@ -137,6 +142,6 @@ Ping.prototype.start = function(callback) { // STOP SENDING PINGS // ================== -Ping.prototype.stop = function() { +Ping.prototype.stop = function () { clearInterval(this._i); };