diff --git a/knots/web-server.scm b/knots/web-server.scm index 99abfdc..60b3f06 100644 --- a/knots/web-server.scm +++ b/knots/web-server.scm @@ -317,16 +317,19 @@ on the procedure being called at any particular time." ;; Close the client port #f) -(define* (handle-request handler client +(define* (handle-request handler client sockaddr read-request-exception-handler write-response-exception-handler buffer-size #:key post-request-hook) + (define meta + `((sockaddr . ,sockaddr))) + (let ((request (with-exception-handler read-request-exception-handler (lambda () - (read-request client)) + (read-request client meta)) #:unwind? #t)) (read-request-time (get-internal-real-time))) @@ -449,7 +452,7 @@ on the procedure being called at any particular time." #f))) #:unwind? #t)))) -(define* (client-loop client handler +(define* (client-loop client handler sockaddr read-request-exception-handler write-response-exception-handler connection-idle-timeout @@ -494,7 +497,7 @@ on the procedure being called at any particular time." #:unwind? #t) (close-port client)) (else - (let ((keep-alive? (handle-request handler client + (let ((keep-alive? (handle-request handler client sockaddr read-request-exception-handler write-response-exception-handler buffer-size @@ -579,7 +582,7 @@ before sending back to the client." (match (accept socket (logior SOCK_NONBLOCK SOCK_CLOEXEC)) ((client . sockaddr) (spawn-fiber (lambda () - (client-loop client handler + (client-loop client handler sockaddr read-request-exception-handler write-response-exception-handler connection-idle-timeout