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