diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/loader/cgi.nim | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/loader/cgi.nim b/src/loader/cgi.nim index b91e3b1b..6decb7b6 100644 --- a/src/loader/cgi.nim +++ b/src/loader/cgi.nim @@ -240,7 +240,7 @@ proc killHandle(handle: LoaderHandle) = discard handle.output.ostream.sendData(msg) handle.parser = nil -proc parseHeaders*(handle: LoaderHandle; buffer: LoaderBuffer): int = +proc parseHeaders0(handle: LoaderHandle; buffer: LoaderBuffer): int = let parser = handle.parser var s = parser.lineBuffer let L = if buffer == nil: 1 else: buffer.len @@ -287,5 +287,12 @@ proc parseHeaders*(handle: LoaderHandle; buffer: LoaderBuffer): int = parser.lineBuffer = s return L +proc parseHeaders*(handle: LoaderHandle; buffer: LoaderBuffer): int = + try: + return handle.parseHeaders0(buffer) + except ErrorBrokenPipe: + handle.parser = nil + return -1 + proc finishParse*(handle: LoaderHandle) = discard handle.parseHeaders(nil) |