Close response after error in proxy

This commit is contained in:
Cadence Ember 2022-10-04 21:00:33 +13:00
parent 2a56107e97
commit 10cdd260e0
Signed by untrusted user: cadence
GPG key ID: BC1C2C61CF521B17

View file

@ -18,13 +18,16 @@
(match (dict-ref (url-query (request-uri req)) 'dest #f) (match (dict-ref (url-query (request-uri req)) 'dest #f)
[(? string? dest) [(? string? dest)
(if (is-fandom-url? dest) (if (is-fandom-url? dest)
(response-handler (response-handler ; catches and reports errors
(let ([dest-r (easy:get dest #:stream? #t)]) (let ([dest-r (easy:get dest #:stream? #t)])
(response/output (with-handlers ([exn:fail? (λ (e) ; cleans up and re-throws
#:code (easy:response-status-code dest-r) (easy:response-close! dest-r)
#:mime-type (easy:response-headers-ref dest-r 'content-type) (raise e))])
(λ (out) (response/output
(copy-port (easy:response-output dest-r) out) #:code (easy:response-status-code dest-r)
(easy:response-close! dest-r))))) #:mime-type (easy:response-headers-ref dest-r 'content-type)
(λ (out)
(copy-port (easy:response-output dest-r) out)
(easy:response-close! dest-r))))))
(next-dispatcher))] (next-dispatcher))]
[#f (next-dispatcher)])) [#f (next-dispatcher)]))