diff options
author | Mathieu Othacehe <othacehe@gnu.org> | 2020-12-10 09:46:50 +0100 |
---|---|---|
committer | Mathieu Othacehe <othacehe@gnu.org> | 2020-12-10 09:48:03 +0100 |
commit | 0faef871784f4f88e622dd36b492f020387f7a5e (patch) | |
tree | 4e327a5433d224e3e4f0d3662ff8485ae7be398b | |
parent | 71dd1be597f320ee89ea68bac5e898d1f4026c7f (diff) |
avahi: Ignore local services.
* guix/avahi.scm (avahi-browse-service-thread): Add "ignore-local?" argument
and honor it.
-rw-r--r-- | guix/avahi.scm | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/guix/avahi.scm b/guix/avahi.scm index 8a82fd3beb..aa90a5cdd4 100644 --- a/guix/avahi.scm +++ b/guix/avahi.scm @@ -92,6 +92,7 @@ when STOP-LOOP? procedure returns true." (define* (avahi-browse-service-thread proc #:key types + (ignore-local? #t) (family AF_INET) (stop-loop? (const #f)) (timeout 100)) @@ -116,7 +117,9 @@ when STOP-LOOP? procedure returns true." ;; 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 @@ when STOP-LOOP? procedure returns true." ((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) |