From e24f9412dd743fdd77ac4e0603cac1f2daf2a13d Mon Sep 17 00:00:00 2001 From: tigerbot Date: Wed, 10 May 2017 17:21:03 -0600 Subject: [PATCH] improved error handling for TLS/TCP proxying --- lib/goldilocks.js | 11 +++++++++++ lib/modules/tls.js | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/lib/goldilocks.js b/lib/goldilocks.js index fd88055..f0f269a 100644 --- a/lib/goldilocks.js +++ b/lib/goldilocks.js @@ -94,6 +94,17 @@ module.exports.create = function (deps, config) { }); + // Not sure how to effectively report this to the user or client, but we need to listen + // for the event to prevent it from crashing us. + newConn.on('error', function (err) { + console.error('TCP forward connection error', err); + conn.end(); + }); + conn.on('error', function (err) { + console.error('TCP forward client error', err); + newConn.end(); + }); + newConn.pipe(conn); conn.pipe(newConn); }; diff --git a/lib/modules/tls.js b/lib/modules/tls.js index c3570ce..16f551f 100644 --- a/lib/modules/tls.js +++ b/lib/modules/tls.js @@ -147,6 +147,17 @@ module.exports.create = function (deps, config, netHandler) { , remotePort: opts.port || extractSocketProp(socket, 'remotePort') }); + // Not sure how to effectively report this to the user or client, but we need to listen + // for the event to prevent it from crashing us. + newConn.on('error', function (err) { + console.error('TLS proxy connection error', err); + socket.end(); + }); + socket.on('error', function (err) { + console.error('TLS proxy client error', err); + newConn.end(); + }); + newConn.write(opts.firstChunk); newConn.pipe(socket); socket.pipe(newConn);