about summary refs log tree commit diff stats
path: root/src/server
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2023-12-15 18:42:21 +0100
committerbptato <nincsnevem662@gmail.com>2023-12-15 18:43:49 +0100
commitdab0d1cd21e216da5551e807489a704ae7b3cb42 (patch)
tree25f736d1b3b76659784ade93ac812a104cc22db4 /src/server
parentd67caf71c96629056275432f1ab5b5510db23c0b (diff)
downloadchawan-dab0d1cd21e216da5551e807489a704ae7b3cb42.tar.gz
Implement local CGI error message handling
This was documented, but not implemented until now.

Also, improve the loader module's protocol documentation.
Diffstat (limited to 'src/server')
-rw-r--r--src/server/buffer.nim6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/server/buffer.nim b/src/server/buffer.nim
index 2217522b..49624fb8 100644
--- a/src/server/buffer.nim
+++ b/src/server/buffer.nim
@@ -769,6 +769,7 @@ proc loadResources(buffer: Buffer): EmptyPromise =
 type ConnectResult* = object
   invalid*: bool
   code*: int
+  errorMessage*: string # if empty, use getLoaderErrorMessage
   needsAuth*: bool
   redirect*: Request
   contentType*: string
@@ -810,7 +811,10 @@ proc connect*(buffer: Buffer): ConnectResult {.proxy.} =
     let request = source.request
     let response = buffer.loader.doRequest(request, blocking = true, canredir = true)
     if response.body == nil:
-      return ConnectResult(code: response.res)
+      return ConnectResult(
+        code: response.res,
+        errorMessage: response.internalMessage
+      )
     if response.charset != CHARSET_UNKNOWN:
       charset = charset
     if buffer.source.contentType.isNone: