Use Guile Fibers web server.
authorRicardo Wurmus <rekado@elephly.net>
Sat, 10 Nov 2018 09:52:49 +0000 (10:52 +0100)
committerRicardo Wurmus <rekado@elephly.net>
Sat, 10 Nov 2018 09:52:49 +0000 (10:52 +0100)
* mumi/web/server.scm (handler): Simplify.
(start-mumi-web-server): Use fiberized server.
* guix.scm: Add guile-fibers to inputs.
* configure.ac: Check for availability of fibers.

configure.ac
guix.scm
mumi/web/server.scm

index a4dbdcfa1e956d9c6de8b4d33af22a9d4ab044d1..24429827ca990faba881b9c47d5c81b48b7ff221 100644 (file)
@@ -21,6 +21,11 @@ if test "x$have_guile_email" != "xyes"; then
   AC_MSG_ERROR([guile-email is missing; please install it.])
 fi
 
+GUILE_MODULE_AVAILABLE([have_fibers], [(fibers web server)])
+if test "x$have_fibers" != "xyes"; then
+  AC_MSG_ERROR([Guile fibers is missing; please install it.])
+fi
+
 guilemoduledir="${datarootdir}/guile/site/${GUILE_EFFECTIVE_VERSION}"
 AC_SUBST([guilemoduledir])
 AC_SUBST([GUILE_EFFECTIVE_VERSION])
index 5d646f58c2989caf9b0a8f69fdc9ffa2dc4138f7..bcde7f0e1da7c00d215a457df12c688870b39b1e 100644 (file)
--- a/guix.scm
+++ b/guix.scm
@@ -100,6 +100,7 @@ Debbugs bug tracker's SOAP service.")
   (inputs
    `(("guile-debbugs" ,guile-debbugs-next)
      ("guile-email" ,guile-email)
+     ("guile-fibers" ,guile-fibers)
      ("guile-syntax-highlight" ,guile-syntax-highlight)
      ("guile" ,guile-2.2.4)))
   (native-inputs
index 0c1f6621e48328bfabaf582cdec9c1085aaee246..b86ef3b9cb3c3045202492ed088efc5ad39e0ab3 100644 (file)
@@ -19,8 +19,8 @@
   #:use-module (srfi srfi-1)
   #:use-module (web http)
   #:use-module (web request)
-  #:use-module (web server)
   #:use-module (web uri)
+  #:use-module (fibers web server)
   #:use-module (mumi web controller)
   #:use-module (mumi web util)
   #:export (start-mumi-web-server))
           (request-method request)
           (uri-path (request-uri request)))
   (apply values
-         (append
-          (run-controller controller request body)
-          (list controller))))
+         (run-controller controller request body)))
 
 (define (start-mumi-web-server port)
-  (run-server (lambda args (apply handler args))
-              'http
-              `(#:addr ,INADDR_ANY
-                #:port ,port)
-              controller))
+  (run-server (lambda (request body)
+                (handler request body controller))
+              #:addr INADDR_ANY
+              #:port port))