summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--guix/store.scm11
1 files changed, 9 insertions, 2 deletions
diff --git a/guix/store.scm b/guix/store.scm
index 57e1ca06aa..343da91506 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -266,8 +266,15 @@ operate, should the disk become full.  Return a server object."
              (socket PF_UNIX SOCK_STREAM 0)))
         (a (make-socket-address PF_UNIX file)))
 
-    ;; Enlarge the receive buffer.
-    (setsockopt s SOL_SOCKET SO_RCVBUF (* 12 1024))
+    (catch 'system-error
+      (lambda ()
+        ;; Enlarge the receive buffer.
+        (setsockopt s SOL_SOCKET SO_RCVBUF (* 12 1024)))
+      (lambda args
+        ;; On the Hurd, the pflocal server's implementation of `socket_setopt'
+        ;; always returns ENOPROTOOPT.  Ignore it.
+        (unless (= (system-error-errno args) ENOPROTOOPT)
+          (apply throw args))))
 
     (catch 'system-error
       (cut connect s a)