From 1008f65b7d7c4a16e024b2fb83a8ae91deb06412 Mon Sep 17 00:00:00 2001 From: Dorian Niemiec Date: Fri, 16 Feb 2024 02:37:49 +0100 Subject: [PATCH] Update to OrangeCircle 1.2.0 --- index.js | 13 ++++++++++--- mod.info | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 810b987..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 @@ -101,7 +102,7 @@ Mod.prototype.callback = function (req, res, serverconsole, responseEnd, href, e var headerendline = -1; var cned = false; var dataHandler = function (data) { - buffer += data.toString("latin1"); + if (!cned) buffer += data.toString("latin1"); var m = null; if (!cned) m = buffer.match(/(?:\r\n\r\n|\n\r\n\r|\n\n|\r\r)/); if (!cned && m) { @@ -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); @@ -161,11 +164,15 @@ Mod.prototype.callback = function (req, res, serverconsole, responseEnd, href, e return; } } else { - if (cned && !res.finished) res.write(data); + if (cned && !res.finished) { + res.write(data); + socket.removeListener("data", dataHandler); + socket.pipe(res, {end: false}); + } } }; - var socket = net.createConnection({ + socket = net.createConnection({ host: scgiConf.host, port: scgiConf.port, }, function () { diff --git a/mod.info b/mod.info index ab0f5dd..e270284 100755 --- a/mod.info +++ b/mod.info @@ -1,4 +1,4 @@ { "name": "OrangeCircle SCGI client for SVR.JS", - "version": "1.1.3" + "version": "1.2.0" }