about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2025-03-02 20:11:48 +0100
committerbptato <nincsnevem662@gmail.com>2025-03-02 20:14:50 +0100
commita0b345318e08d73eaedfc9b1caeec5b78fc270e3 (patch)
treee33c7b78a479d8669d6a478f04335446cdbd7e08
parenta233ff9554372f04d3a6633f6e22db6c83db8c97 (diff)
downloadchawan-a0b345318e08d73eaedfc9b1caeec5b78fc270e3.tar.gz
loader: fix crash on iclose if client is dead
-rw-r--r--src/server/loader.nim9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/server/loader.nim b/src/server/loader.nim
index 6aee6fb3..fb496189 100644
--- a/src/server/loader.nim
+++ b/src/server/loader.nim
@@ -265,10 +265,13 @@ proc iclose(handle: InputHandle) =
       assert handle.outputs.len == 1
       # not an ideal solution, but better than silently eating malformed
       # headers
-      handle.sendStatus(500, newHeaders())
       handle.output.stream.setBlocking(true)
-      const msg = "Error: malformed header in CGI script"
-      discard handle.output.stream.writeData(msg)
+      try:
+        handle.sendStatus(500, newHeaders())
+        const msg = "Error: malformed header in CGI script"
+        discard handle.output.stream.writeData(msg)
+      except EOFError:
+        discard
     handle.stream.sclose()
     handle.stream = nil