web-server: Expose the sockaddr in the request meta.

This commit is contained in:
Christopher Baines 2026-03-22 15:19:33 +00:00
parent 677d941cb3
commit c36ddc2214

View file

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