diff --git a/lib/wrapper.js b/lib/wrapper.js index 092ab86..f57d570 100644 --- a/lib/wrapper.js +++ b/lib/wrapper.js @@ -85,11 +85,23 @@ 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. +function createKeepAliveServer() { + var sv = net.createServer((c) => { + c.on('error', (err) => { + log.warn(`Socket error (${err.code}) in wrapper keep-alive. Ignoring...`); + }); + }); + sv.listen(); + return sv; +} +var server = createKeepAliveServer(); 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 = createKeepAliveServer(); }); /**