diff --git a/breezewiki.rkt b/breezewiki.rkt index ee4f9b9..0421e12 100644 --- a/breezewiki.rkt +++ b/breezewiki.rkt @@ -24,15 +24,20 @@ (set-reload-poll-interval! #f)) (reload!) -(serve/launch/wait - #:listen-ip (if (config-true? 'debug) "127.0.0.1" #f) - #:port (string->number (config-get 'port)) - (λ (quit) - (sequencer:make - (pathprocedure:make "/" page-home) - (pathprocedure:make "/proxy" page-proxy) - (filter:make #rx"^/[a-z-]+/wiki/Category:.+$" (lift:make page-category)) - (filter:make #rx"^/[a-z-]+/wiki/.+$" (lift:make page-wiki)) - (filter:make #rx"^/[a-z-]+/search$" (lift:make page-search)) - static-dispatcher - (lift:make page-not-found)))) +(define ch (make-channel)) +(define (start) + (serve/launch/wait + #:listen-ip (if (config-true? 'debug) "127.0.0.1" #f) + #:port (string->number (config-get 'port)) + (λ (quit) + (channel-put ch (lambda () (semaphore-post quit))) + (sequencer:make + (pathprocedure:make "/" page-home) + (pathprocedure:make "/proxy" page-proxy) + (filter:make #rx"^/[a-z-]+/wiki/Category:.+$" (lift:make page-category)) + (filter:make #rx"^/[a-z-]+/wiki/.+$" (lift:make page-wiki)) + (filter:make #rx"^/[a-z-]+/search$" (lift:make page-search)) + static-dispatcher + (lift:make page-not-found))))) +(define server-t (thread start)) +(define quit (channel-get ch))