From 841aff67ed03731b5c50072b0dd6dbf9d5d3ffcd Mon Sep 17 00:00:00 2001 From: Dorian Niemiec Date: Tue, 20 Feb 2024 00:09:00 +0100 Subject: [PATCH] Fix SVR.JS crashing, because the error stream has been ended. --- index.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 5ec4433..74693ed 100644 --- a/index.js +++ b/index.js @@ -168,7 +168,11 @@ function createFastCGIHandler(options) { if (processedPacket.type == STDOUT) { if(processedPacket.content.length > 0) emulatedStdout.push(processedPacket.content); } else if (processedPacket.type == STDERR) { - if(processedPacket.content.length > 0) emulatedStderr.push(processedPacket.content); + try { + if(processedPacket.content.length > 0) emulatedStderr.push(processedPacket.content); + } catch (err) { + //STDERR will be lost anyway... + } } else if (processedPacket.type == END_REQUEST && processedPacket.content.length > 5) { if (typeof socket !== "undefined") socket.removeListener("data", fastCGISocketHandler); var appStatus = processedPacket.content.readUInt32BE(0); @@ -185,22 +189,24 @@ function createFastCGIHandler(options) { err = new Error("Multiplexed connections not supported by the FastCGI application"); } emulatedStdout.push(null); - emulatedStderr.push(null); if (emulatedStdout._readableState && emulatedStdout._readableState.length > 0 && emulatedStdout._readableState.flowing !== null) { emulatedStdout.on("end", function() { + emulatedStderr.push(null); eventEmitter.emit("error", err); }); } else { + emulatedStderr.push(null); eventEmitter.emit("error", err); } } else { emulatedStdout.push(null); - emulatedStderr.push(null); if (emulatedStdout._readableState && emulatedStdout._readableState.length > 0 && emulatedStdout._readableState.flowing !== null) { emulatedStdout.on("end", function() { + emulatedStderr.push(null); eventEmitter.emit("exit", appStatus, null); }); } else { + emulatedStderr.push(null); eventEmitter.emit("exit", appStatus, null); } }