[object Object]

← back to Corvette Dashboard Viewer

Close /img socket leak: destroy the response on mid-body CDN stall instead of leaving it half-piped and never-ended

3e6c8b122e604b999e5f9d4d4399494a4bf3577f · 2026-07-28 22:22:47 -0700 · steve

Files touched

Diff

commit 3e6c8b122e604b999e5f9d4d4399494a4bf3577f
Author: steve <steve@designerwallcoverings.com>
Date:   Tue Jul 28 22:22:47 2026 -0700

    Close /img socket leak: destroy the response on mid-body CDN stall instead of leaving it half-piped and never-ended
---
 server.js | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/server.js b/server.js
index 9436254..34088a6 100644
--- a/server.js
+++ b/server.js
@@ -172,7 +172,13 @@ http.createServer((req, res) => {
       pres.pipe(res);
     });
     ir.on('error', placeholder);
-    ir.setTimeout(6000, () => { ir.destroy(); placeholder(); });
+    ir.setTimeout(6000, () => {
+      ir.destroy();
+      // If the 200 already went out and piping began (stall MID-body), placeholder() no-ops
+      // on the headersSent guard — which would leak a half-piped, never-ended response. So
+      // tear the client socket down here. Otherwise (stall pre-headers) emit the placeholder.
+      if (res.headersSent && !res.writableEnded) res.destroy(); else placeholder();
+    });
     return;
   }
 

← 9115bd3 Harden now-public surface: guard /img double-writeHead (ERR_  ·  back to Corvette Dashboard Viewer  ·  Move corvette console default port 9797->9803 (RENTV Live Co f45e428 →