From 94a6511fd58ff7a9bb229b07cefcaa2e8dc068a5 Mon Sep 17 00:00:00 2001 From: Zachary Boyd Date: Mon, 10 Sep 2018 13:25:39 -0400 Subject: [PATCH] Fixes a bug where exceptions caused by the inbound socket on HTTPServer are not caught --- src/HTTPServer.js | 14 ++++++-------- src/launch.js | 9 +++++++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/HTTPServer.js b/src/HTTPServer.js index 0af9826..a51db57 100644 --- a/src/HTTPServer.js +++ b/src/HTTPServer.js @@ -176,16 +176,14 @@ class HTTPServer extends Server { inbound_socket && inbound_socket.end(); outbound_socket && outbound_socket.end(); - inbound_socket = outbound_socket = buffer = void(0); + inbound_socket = outbound_socket = void(0); - if (error) + if (error instanceof Error) this.logger.error(`[http-connect]: an error occured: ${error.message}`) }; - var buffer = [head]; - let onInboundData = function (data) { - buffer.push(data); - }; + inbound_socket.on('error', onClose); + inbound_socket.on('close', onClose); socks.connect({ host: hostname, @@ -196,8 +194,8 @@ class HTTPServer extends Server { auths: [ socks.auth.None() ] }, ($outbound_socket) => { outbound_socket = $outbound_socket; - outbound_socket && outbound_socket.on('close', onClose); - outbound_socket && outbound_socket.on('error', onClose); + outbound_socket.on('close', onClose); + outbound_socket.on('error', onClose); inbound_socket.write(`HTTP/1.1 200 Connection Established\r\n'+'Proxy-agent: ${TOR_ROUTER_PROXY_AGENT}\r\n` +'\r\n'); outbound_socket.write(head); diff --git a/src/launch.js b/src/launch.js index 8b9846a..c874011 100644 --- a/src/launch.js +++ b/src/launch.js @@ -95,9 +95,10 @@ async function main(nconf, logger) { thereWasAnExitError = true; } - if (handleError && error) { - console.log(error) + if (error instanceof Error) { logger.error(`[global]: error shutting down: ${error.message}`); + } else { + error = 0; } process.exit(Number(Boolean(error || thereWasAnExitError))); @@ -191,6 +192,10 @@ nconf let nconf_config = nconf.get('config'); if (nconf_config) { + if (!require('fs').existsSync(nconf_config)) { + console.error(`[global]: config file "${nconf_config}" does not exist. exiting.`); + process.exit(1); + } nconf.file(nconf_config); } else { nconf.use('memory');