From 887ede64be0fac5a1b80029c6e339e5fdda42ff0 Mon Sep 17 00:00:00 2001 From: m64907 Date: Fri, 18 Dec 2020 10:00:06 -0500 Subject: [PATCH 1/2] Prevent security scanner from killing wrapper with ECONNRESET --- lib/wrapper.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/wrapper.js b/lib/wrapper.js index 092ab86..c90aa2f 100644 --- a/lib/wrapper.js +++ b/lib/wrapper.js @@ -85,11 +85,19 @@ if (typeof argv.m === 'string'){ argv.f = p.resolve(argv.f); // Hack to force the wrapper process to stay open by launching a ghost socket server -var server = net.createServer().listen(); +// Some security penetration tests create numerous daily socket errors that restart the wrapper. +// Handling errors here is preferable to restarting the service for no real reason. +var server = net.createServer((c) => { + c.on('error', (err) => { + log.warn(`Socket error (${err.code}) in wrapper keep-alive. Ignoring...`); + }); +}); +server.listen(); server.on('error', function (err) { - launch('warn', err.message); - server = net.createServer().listen(); + server.close(); // don't leak a trail of unclosed servers + launch('warn', err.message); + server = net.createServer().listen(); }); /** From 94e06e9b6d2a520f329916bca9cba9f5b3c4bd0f Mon Sep 17 00:00:00 2001 From: m64907 Date: Tue, 22 Dec 2020 10:49:16 -0500 Subject: [PATCH 2/2] Extract to fn so subsequent servers also have an error handler --- lib/wrapper.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/wrapper.js b/lib/wrapper.js index c90aa2f..f57d570 100644 --- a/lib/wrapper.js +++ b/lib/wrapper.js @@ -87,17 +87,21 @@ argv.f = p.resolve(argv.f); // Hack to force the wrapper process to stay open by launching a ghost socket server // Some security penetration tests create numerous daily socket errors that restart the wrapper. // Handling errors here is preferable to restarting the service for no real reason. -var server = net.createServer((c) => { - c.on('error', (err) => { - log.warn(`Socket error (${err.code}) in wrapper keep-alive. Ignoring...`); +function createKeepAliveServer() { + var sv = net.createServer((c) => { + c.on('error', (err) => { + log.warn(`Socket error (${err.code}) in wrapper keep-alive. Ignoring...`); + }); }); -}); -server.listen(); + sv.listen(); + return sv; +} +var server = createKeepAliveServer(); server.on('error', function (err) { server.close(); // don't leak a trail of unclosed servers launch('warn', err.message); - server = net.createServer().listen(); + server = createKeepAliveServer(); }); /**