aboutsummaryrefslogtreecommitdiff
path: root/guix-data-service
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-03-14 13:13:48 +0000
committerChristopher Baines <mail@cbaines.net>2020-03-14 13:13:48 +0000
commit865e856e8fdaf9a193bf506b23788baf22b45559 (patch)
treed72e208e5197c375a750a7383d113683152b5f0e /guix-data-service
parentebb8ab80664d63e21cf832667f7f8bac5731b440 (diff)
downloaddata-service-865e856e8fdaf9a193bf506b23788baf22b45559.tar
data-service-865e856e8fdaf9a193bf506b23788baf22b45559.tar.gz
Provide more information if the server can't bind the port
As this could be a common problem.
Diffstat (limited to 'guix-data-service')
-rw-r--r--guix-data-service/web/server.scm27
1 files changed, 22 insertions, 5 deletions
diff --git a/guix-data-service/web/server.scm b/guix-data-service/web/server.scm
index 4f81d4c..452ce6c 100644
--- a/guix-data-service/web/server.scm
+++ b/guix-data-service/web/server.scm
@@ -19,9 +19,11 @@
(define-module (guix-data-service web server)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
+ #:use-module (ice-9 match)
#:use-module (web http)
#:use-module (web request)
#:use-module (web uri)
+ #:use-module (system repl error-handling)
#:use-module (fibers web server)
#:use-module (guix-data-service web controller)
#:use-module (guix-data-service web util)
@@ -46,8 +48,23 @@
(run-controller controller request body secret-key-base)))
(define (start-guix-data-service-web-server port host secret-key-base)
- (run-server (lambda (request body)
- (handler request body controller
- secret-key-base))
- #:host host
- #:port port))
+ (call-with-error-handling
+ (lambda ()
+ (run-server (lambda (request body)
+ (handler request body controller
+ secret-key-base))
+ #:host host
+ #:port port))
+ #:on-error 'backtrace
+ #:post-error (lambda (key . args)
+ (when (eq? key 'system-error)
+ (match args
+ (("bind" "~A" ("Address already in use") _)
+ (simple-format
+ (current-error-port)
+ "\n
+error: guix-data-service could not start, as it could not bind to port ~A
+
+Check if it's already running, or whether another process is using that
+port. Also, the port used can be changed by passing the --port option.\n"
+ port)))))))