diff --git a/lib/Local.js b/lib/Local.js index 7486bc7..98cf766 100644 --- a/lib/Local.js +++ b/lib/Local.js @@ -45,12 +45,24 @@ function Local(){ const obj = childProcess.spawnSync(that.binaryPath, that.getBinaryArgs()); this.tunnel = {pid: obj.pid}; var data = {}; - if(obj.stdout.length > 0) - data = JSON.parse(obj.stdout); - else if(obj.stderr.length > 0) - data = JSON.parse(obj.stderr); - else + if(obj.stdout.length > 0){ + try{ + data = JSON.parse(obj.stdout); + }catch(error){ + data = obj.stdout; + } + } else if(obj.stderr.length > 0){ + try{ + data = JSON.parse(obj.stderr); + }catch(error){ + data = obj.stderr; + } + } else { return new LocalError('No output received'); + } + if(typeof data === 'string'){ + return new LocalError('Malformed output received'); + } if(data['state'] != 'connected'){ return new LocalError(data['message']['message']); } else { @@ -93,21 +105,31 @@ function Local(){ that.retriesLeft -= 1; fs.unlinkSync(that.binaryPath); delete(that.binaryPath); - that.start(options, callback); - return; + return that.start(options, callback); } else { - callback(new LocalError(error.toString())); + return callback(new LocalError(error.toString())); } } var data = {}; - if(stdout) - data = JSON.parse(stdout); - else if(stderr) - data = JSON.parse(stderr); - else - callback(new LocalError('No output received')); - + if(stdout){ + try{ + data = JSON.parse(stdout); + }catch(error){ + data = stdout; + } + } else if(stderr){ + try{ + data = JSON.parse(stderr); + }catch(error){ + data = stderr; + } + } else { + return callback(new LocalError('No output received')); + } + if(typeof data === 'string'){ + return callback(new LocalError('Malformed output received')); + } if(data['state'] != 'connected'){ callback(new LocalError(data['message']['message'])); } else { @@ -126,7 +148,7 @@ function Local(){ this.stop = function (callback) { if(!this.pid) return callback(); this.killAllProcesses(function(error){ - if(error) callback(new LocalError(error.toString())); + if(error) return callback(new LocalError(error.toString())); callback(); }); }; @@ -316,6 +338,7 @@ function Local(){ this.killAllProcesses = function(callback){ psTree(this.pid, (err, children) => { + if(err) return callback(err); var childPids = children.map(val => val.PID); var killChecker = setInterval(() => { if(childPids.length === 0) { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy