From 1680398db2c434737e04f9f1551126fb87641b69 Mon Sep 17 00:00:00 2001 From: Dorian Niemiec Date: Fri, 16 Feb 2024 02:35:20 +0100 Subject: [PATCH] Prevented server crashes caused by header write errors. Also adapted RedBrick patches to OrangeCircle --- index.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 6d45707..3387695 100644 --- a/index.js +++ b/index.js @@ -89,6 +89,7 @@ Mod.prototype.callback = function (req, res, serverconsole, responseEnd, href, e } var abheaders = JSON.parse(JSON.stringify(bheaders)); + var socket = {}; function executeSCGI(req, res, dh, nEnv) { // Function to execute SCGI scripts @@ -152,6 +153,8 @@ Mod.prototype.callback = function (req, res, serverconsole, responseEnd, href, e res.writeHead(code, msg, bheaderso); res.write(buffer.substr(headerendline + eol.length), "latin1"); } catch (ex) { + socket.removeAllListeners("data"); + socket.removeAllListeners("end"); if (!callServerError) { res.writeHead(500); res.end(ex.stack); @@ -163,13 +166,13 @@ Mod.prototype.callback = function (req, res, serverconsole, responseEnd, href, e } else { if (cned && !res.finished) { res.write(data); - interpreter.stdout.removeListener("data", dataHandler); - interpreter.stdout.pipe(res, {end: false}); + socket.removeListener("data", dataHandler); + socket.pipe(res, {end: false}); } } }; - var socket = net.createConnection({ + socket = net.createConnection({ host: scgiConf.host, port: scgiConf.port, }, function () {