From 80b6ceeff1c4adfd143017bfaef3f3e8bddcdd11 Mon Sep 17 00:00:00 2001 From: Jay McCarthy Date: Thu, 15 Jul 2010 10:14:16 -0600 Subject: [PATCH] Fixes PR11024. The problem was that when the connection is closed its custodian is shutdown, thus killing the thread that was going to bring the server down. The difference between curl and the browser was that even though they both use HTTP/1.1, the browser actually leaves the connection open longer. --- collects/web-server/servlet-dispatch.rkt | 2 ++ collects/web-server/servlet-env.rkt | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/collects/web-server/servlet-dispatch.rkt b/collects/web-server/servlet-dispatch.rkt index a4d1c0755f..45e5125522 100644 --- a/collects/web-server/servlet-dispatch.rkt +++ b/collects/web-server/servlet-dispatch.rkt @@ -130,5 +130,7 @@ (shutdown-server))]) (with-handlers ([exn:break? (lambda (exn) (bye))]) (semaphore-wait/enable-break sema) + ; Give the final response time to get there + (sleep 2) ;; We can get here if a /quit url is visited (bye)))) diff --git a/collects/web-server/servlet-env.rkt b/collects/web-server/servlet-env.rkt index 09ebe138ef..ddb6bc2a62 100644 --- a/collects/web-server/servlet-env.rkt +++ b/collects/web-server/servlet-env.rkt @@ -25,7 +25,7 @@ (define (quit-server sema) (lift:make (lambda (request) - (thread (lambda () (sleep 2) (semaphore-post sema))) + (semaphore-post sema) `(html (head (title "Server Stopped") (link ([rel "stylesheet"] [href "/error.css"]))) (body (div ([class "section"])