From 219a189993fc30e3b4dc98b27bf1f965a404ec6e Mon Sep 17 00:00:00 2001 From: Sander Declerck Date: Wed, 8 Oct 2025 19:32:25 +0200 Subject: [PATCH] Check if a socket is writable before writing to it --- .../src/registryProxy/tunnelRequestHandler.js | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/safe-chain/src/registryProxy/tunnelRequestHandler.js b/packages/safe-chain/src/registryProxy/tunnelRequestHandler.js index 95e2beb..fa12aee 100644 --- a/packages/safe-chain/src/registryProxy/tunnelRequestHandler.js +++ b/packages/safe-chain/src/registryProxy/tunnelRequestHandler.js @@ -35,7 +35,9 @@ function tunnelRequestToDestination(req, clientSocket, head) { ui.writeError( `Safe-chain: error connecting to ${hostname}:${port} - ${err.message}` ); - clientSocket.end("HTTP/1.1 502 Bad Gateway\r\n\r\n"); + if (clientSocket.writable) { + clientSocket.end("HTTP/1.1 502 Bad Gateway\r\n\r\n"); + } }); } @@ -76,8 +78,12 @@ function tunnelRequestViaProxy(req, clientSocket, head, proxyUrl) { ui.writeError( `Safe-chain: proxy CONNECT failed: ${response.split("\r\n")[0]}` ); - clientSocket.end("HTTP/1.1 502 Bad Gateway\r\n\r\n"); - proxySocket.end(); + if (clientSocket.writable) { + clientSocket.end("HTTP/1.1 502 Bad Gateway\r\n\r\n"); + } + if (proxySocket.writable) { + proxySocket.end(); + } } }); @@ -88,11 +94,15 @@ function tunnelRequestViaProxy(req, clientSocket, head, proxyUrl) { proxy.port || 8080 } - ${err.message}` ); - clientSocket.end("HTTP/1.1 502 Bad Gateway\r\n\r\n"); + if (clientSocket.writable) { + clientSocket.end("HTTP/1.1 502 Bad Gateway\r\n\r\n"); + } } }); clientSocket.on("error", () => { - proxySocket.end(); + if (proxySocket.writable) { + proxySocket.end(); + } }); }