web: Wrap handler before passing to run-server.
authorArun Isaac <arunisaac@systemreboot.net>
Sun, 2 Jan 2022 19:43:26 +0000 (01:13 +0530)
committerRicardo Wurmus <rekado@elephly.net>
Fri, 7 Jan 2022 15:42:26 +0000 (16:42 +0100)
This enables live hacking via the REPL.

* mumi/web/server.scm: Import (srfi srfi-26).
(start-mumi-web-server): Wrap handler before passing it to run-server.

mumi/web/server.scm

index db7662aaf0783bcfbc2b83b04c87f8558d08c429..6de6fa452b09bd4ebba76d74c5f43c070671c300 100644 (file)
@@ -18,6 +18,7 @@
 
 (define-module (mumi web server)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
   #:use-module (web http)
   #:use-module (web request)
   #:use-module (web uri)
   (format (current-error-port)
           "Mumi web server listening on http://~a:~a/~%"
           address port)
-  (run-server handler
+  ;; Wrap handler in another function to support live hacking via the
+  ;; REPL. If handler is passed as is and is then redefined via the
+  ;; REPL, the web server will still be using the old handler. The
+  ;; only way to update the handler reference held by the web server
+  ;; would be to restart the web server.
+  (run-server (cut handler <> <>)
               #:addr (inet-pton AF_INET address)
               #:port port))