~ruther/guix-local

248cf06149b4f09bfca4a21710bc8e1bd47f6e61 — Ludovic Courtès 3 years ago 99a27d3
avahi: Resolve hosts for which name resolution fails.

This avoids attempts to connect to hosts that went off-line.  This is
particularly important for 'guix-daemon --discover', which would so far
keep attempting to talk to LAN hosts after they vanished just because
their mDNS record hasn't expired, leading to significant delays when
fetching narinfos and substitutes.

* guix/avahi.scm (avahi-browse-service-thread)[service-resolver-callback]:
Add handler to RESOLVER-EVENT/FAILURE.
1 files changed, 9 insertions(+), 1 deletions(-)

M guix/avahi.scm
M guix/avahi.scm => guix/avahi.scm +9 -1
@@ 137,7 137,15 @@ when STOP-LOOP? procedure returns true."
                               (port port)
                               (txt txt))))
               (hash-set! %known-hosts service-name service*)
               (proc 'new-service service*)))))
               (proc 'new-service service*))))
          ((eq? event resolver-event/failure)
           ;; Failure to resolve the host associated with a service.  This
           ;; usually means that the mDNS record hasn't expired yet but that
           ;; the host went off-line.
           (let ((service (hash-ref %known-hosts service-name)))
             (when service
               (proc 'remove-service service)
               (hash-remove! %known-hosts service-name)))))
    (free-service-resolver! resolver))

  (define (service-browser-callback browser interface protocol event