From c302e35024a7abe41573603ebcd510ea8b9b20da Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Tue, 22 Nov 2016 11:45:53 +1300 Subject: [PATCH] Properly shut down tcp-listener --- racket/syndicate/drivers/web.rkt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/racket/syndicate/drivers/web.rkt b/racket/syndicate/drivers/web.rkt index 1e5f99c..d5c7c8a 100644 --- a/racket/syndicate/drivers/web.rkt +++ b/racket/syndicate/drivers/web.rkt @@ -215,12 +215,17 @@ (loop))) (handle-evt listener-control (match-lambda - ['quit (void)])))))) + [(list 'quit k-ch) + (tcp-close listener) + (channel-put k-ch (void))])))))) (on-start (log-syndicate/drivers/web-info "Starting HTTP listener on port ~v" port)) - (on-stop (channel-put listener-control 'quit) - (log-syndicate/drivers/web-info "Stopping HTTP listener on port ~v" port)) + (on-stop (define k-ch (make-channel)) + (log-syndicate/drivers/web-info "Stopping HTTP listener on port ~v" port) + (channel-put listener-control (list 'quit k-ch)) + (channel-get k-ch) + (log-syndicate/drivers/web-info "Stopped HTTP listener on port ~v" port)) (on (message (inbound (web-raw-request $id port $conn $lowlevel-req $control-ch))) (define web-req (web-request id