summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-02-05 11:39:27 +0100
committerLudovic Courtès <ludo@gnu.org>2016-02-05 14:01:46 +0100
commit1d6b7d584736ff0ad9e852a39c7c151e10713580 (patch)
treeb80702c38f8d07b9232fb0e3ee916fdfcf4f0a7b /gnu
parent6b55ee88890c114f9829029c7d0c0c3f03bcda03 (diff)
downloadguix-1d6b7d584736ff0ad9e852a39c7c151e10713580.tar.gz
guix system: Simply warn if we cannot talk to the shepherd.
Before that 'open-connection' would return #f, and thus
'current-services' would return a single #f value when its continuation
expects two.

Reported by calher on #guix.

* gnu/services/herd.scm (open-connection): Rethrow system-error
exceptions.
(with-shepherd): Expect CONNECTION to always be true; remove useless
'dynamic-wind'.
* guix/scripts/system.scm (warn-on-system-error): New macro.
(upgrade-shepherd-services): Wrap body in 'warn-on-system-error'.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/services/herd.scm14
1 files changed, 4 insertions, 10 deletions
diff --git a/gnu/services/herd.scm b/gnu/services/herd.scm
index 89a93a1969..a3a9bf0230 100644
--- a/gnu/services/herd.scm
+++ b/gnu/services/herd.scm
@@ -52,20 +52,14 @@ return the socket."
           (connect sock address)
           (setvbuf sock _IOFBF 1024)
           sock)
-        (lambda (key proc format-string format-args errno . rest)
-          (warning (_ "cannot connect to ~a: ~a~%") file
-                   (apply format #f format-string format-args))
-          #f)))))
+        (lambda args
+          (close-port sock)
+          (apply throw args))))))
 
 (define-syntax-rule (with-shepherd connection body ...)
   "Evaluate BODY... with CONNECTION bound to an open socket to PID 1."
   (let ((connection (open-connection)))
-    (and connection
-         (dynamic-wind
-           (const #t)
-           (lambda ()
-             body ...)
-           (const #t)))))
+    body ...))
 
 (define (report-action-error error)
   "Report ERROR, an sexp received by a shepherd client in reply to COMMAND, a