avahi: Ignore local services.

* guix/avahi.scm (avahi-browse-service-thread): Add "ignore-local?" argument
and honor it.
This commit is contained in:
Mathieu Othacehe 2020-12-10 09:46:50 +01:00
parent 71dd1be597
commit 0faef87178
No known key found for this signature in database
GPG key ID: 8354763531769CA6

View file

@ -92,6 +92,7 @@ (define (interface->ip-address interface)
(define* (avahi-browse-service-thread proc
#:key
types
(ignore-local? #t)
(family AF_INET)
(stop-loop? (const #f))
(timeout 100))
@ -116,7 +117,9 @@ (define (service-resolver-callback resolver interface protocol event
;; Add the service if the host is unknown. This means that if a
;; service is available on multiple network interfaces for a single
;; host, only the first interface found will be considered.
(unless (hash-ref %known-hosts service-name)
(unless (or (hash-ref %known-hosts service-name)
(and ignore-local?
(member lookup-result-flag/local flags)))
(let* ((address (inet-ntop family address))
(local-address (interface->ip-address interface))
(service* (avahi-service
@ -144,8 +147,8 @@ (define (service-browser-callback browser interface protocol event
((eq? event browser-event/remove)
(let ((service (hash-ref %known-hosts service-name)))
(when service
(proc 'remove-service service)
(hash-remove! %known-hosts service-name))))))
(proc 'remove-service service)
(hash-remove! %known-hosts service-name))))))
(define client-callback
(lambda (client state)