Browse Source

store: Deal with unsupported `setsockopt' operation on GNU/Hurd.

* guix/store.scm (open-connection): Silently ignore ENOPROTOOPT on
  `setsockopt' calls, for the sake of GNU/Hurd.
  Reported by Matthew Lien <bluet@bluet.org> at
  <http://lists.gnu.org/archive/html/bug-guix/2013-07/msg00020.html>.
gn-latest-20200428
Ludovic Courtès 8 years ago
parent
commit
8c95b27ce6
  1. 11
      guix/store.scm

11
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)

Loading…
Cancel
Save