1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00

more robustness in http-read

* module/web/server/http.scm (http-read): If there was an error reading
  the request, be sure to close the request port.
This commit is contained in:
Andy Wingo 2010-12-06 11:24:48 +01:00
parent 4164be30d3
commit b500ced6b8

View file

@ -113,12 +113,17 @@
;; Otherwise, try to read a request from this port. ;; Otherwise, try to read a request from this port.
;; Record the next index. ;; Record the next index.
(set-http-poll-idx! server (1- idx)) (set-http-poll-idx! server (1- idx))
(let ((req (read-request port))) (with-throw-handler
;; Block buffering for reading body and writing response. #t
(setvbuf port _IOFBF) (lambda ()
(values port (let ((req (read-request port)))
req ;; Block buffering for reading body and writing response.
(read-request-body/bytevector req)))))))))))) (setvbuf port _IOFBF)
(values port
req
(read-request-body/bytevector req))))
(lambda (k . args)
(false-if-exception (close-port port)))))))))))))
(define (keep-alive? response) (define (keep-alive? response)
(let ((v (response-version response))) (let ((v (response-version response)))