about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2024-12-19 23:25:44 +0100
committerbptato <nincsnevem662@gmail.com>2024-12-19 23:25:44 +0100
commit9ba9cb41aac6da09c8018a6e4cf4dd7e81f6eb96 (patch)
treee6561f2d5280ec197c2a947089a35eebf2657951 /src
parent3db5961c5a72d283f7714d6b9a447f64fff6903c (diff)
downloadchawan-9ba9cb41aac6da09c8018a6e4cf4dd7e81f6eb96.tar.gz
response: automatically resume before close
doing it manually is too error prone
Diffstat (limited to 'src')
-rw-r--r--src/html/dom.nim5
-rw-r--r--src/local/pager.nim3
-rw-r--r--src/server/response.nim5
3 files changed, 4 insertions, 9 deletions
diff --git a/src/html/dom.nim b/src/html/dom.nim
index e7ca7565..5fbea56e 100644
--- a/src/html/dom.nim
+++ b/src/html/dom.nim
@@ -552,10 +552,8 @@ proc create2DContext(jctx: JSContext; target: HTMLCanvasElement;
   if response.res != 0:
     # no canvas module; give up
     ps.sclose()
-    ctlres.resume()
     ctlres.close()
     return
-  ctlres.resume()
   ctlres.close()
   response.resume()
   target.ctx2d = CanvasRenderingContext2D(
@@ -3465,7 +3463,6 @@ proc loadResource*(window: Window; image: HTMLImageElement) =
           body = RequestBody(t: rbtOutput, outputId: response.outputId),
         )
         let r = window.corsFetch(request)
-        response.resume()
         response.close()
         var expiry = -1i64
         if "Cache-Control" in response.headers:
@@ -3485,7 +3482,6 @@ proc loadResource*(window: Window; image: HTMLImageElement) =
             return
           let response = res.get
           # close immediately; all data we're interested in is in the headers.
-          response.resume()
           response.close()
           if "Cha-Image-Dimensions" notin response.headers.table:
             window.console.error("Cha-Image-Dimensions missing in",
@@ -4915,7 +4911,6 @@ proc toBlob(ctx: JSContext; this: HTMLCanvasElement; callback: JSValue;
       headers = headers,
       body = RequestBody(t: rbtOutput, outputId: res.outputId)
     ))
-    res.resume()
     res.close()
     return p
   ).then(proc(res: JSResult[Response]) =
diff --git a/src/local/pager.nim b/src/local/pager.nim
index a2745be9..b77c85f4 100644
--- a/src/local/pager.nim
+++ b/src/local/pager.nim
@@ -1065,7 +1065,6 @@ proc loadCachedImage(pager: Pager; container: Container; image: PosBitmap;
       pager.loader.removeCachedItem(cacheId)
       return newResolvedPromise(res)
     )
-    response.resume()
     response.close()
     return p
   ).then(proc(res: JSResult[Response]) =
@@ -1098,7 +1097,6 @@ proc loadCachedImage(pager: Pager; container: Container; image: PosBitmap;
       tocache = true
     )
     let r = pager.loader.fetch(request)
-    response.resume()
     response.close()
     r.then(proc(res: JSResult[Response]) =
       # remove previous step
@@ -1106,7 +1104,6 @@ proc loadCachedImage(pager: Pager; container: Container; image: PosBitmap;
       if res.isNone:
         return
       let response = res.get
-      response.resume()
       response.close()
       let cacheId = res.get.outputId
       if cachedImage.state == cisCanceled:
diff --git a/src/server/response.nim b/src/server/response.nim
index 1f68932a..f79fbd9b 100644
--- a/src/server/response.nim
+++ b/src/server/response.nim
@@ -83,8 +83,11 @@ func surl*(response: Response): string {.jsfget: "url".} =
   return $response.url
 
 #TODO: this should be a property of body
-proc close*(response: Response) {.jsfunc.} =
+proc close*(response: Response) =
   response.bodyUsed = true
+  if response.resumeFun != nil:
+    response.resumeFun(response.outputId)
+    response.resumeFun = nil
   if response.unregisterFun != nil:
     response.unregisterFun()
     response.unregisterFun = nil