From 9415fde4e88e96be3f3f4a34423bb6aa2cd53e6c Mon Sep 17 00:00:00 2001 From: Till Kamppeter Date: Fri, 4 Oct 2019 10:47:13 +0200 Subject: [PATCH] cups-browsed: Do not try to resolve interface name on Avahi messages which are not interface-related. --- NEWS | 3 +++ utils/cups-browsed.c | 21 ++++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/NEWS b/NEWS index a8a8f3927..090d9e909 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,9 @@ NEWS - OpenPrinting CUPS Filters v1.25.6 - 2019-09-23 CHANGES IN V1.25.7 + - cups-browsed: Do not try to resolve the network interface + name on Avahi messages which are not interface-related (like + "All for now"or "Cache exhausted", Issue #163). - Build system: The helper script ln-srf to build on systems with old ln was not included in the release tarballs (Issue #161). diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c index 2f67d0c4d..1a2772116 100644 --- a/utils/cups-browsed.c +++ b/utils/cups-browsed.c @@ -9703,13 +9703,6 @@ static void browse_callback(AvahiServiceBrowser *b, if (b == NULL) return; - /* Get the interface name */ - if (!if_indextoname(interface, ifname)) { - debug_printf("Unable to find interface name for interface %d: %s\n", - interface, strerror(errno)); - strncpy(ifname, "Unknown", sizeof(ifname)); - } - /* Called whenever a new services becomes available on the LAN or is removed from the LAN */ @@ -9730,6 +9723,13 @@ static void browse_callback(AvahiServiceBrowser *b, if (c == NULL || name == NULL || type == NULL || domain == NULL) return; + /* Get the interface name */ + if (!if_indextoname(interface, ifname)) { + debug_printf("Unable to find interface name for interface %d: %s\n", + interface, strerror(errno)); + strncpy(ifname, "Unknown", sizeof(ifname)); + } + debug_printf("Avahi Browser: NEW: service '%s' of type '%s' in domain '%s' on interface '%s' (%s)\n", name, type, domain, ifname, protocol != AVAHI_PROTO_UNSPEC ? @@ -9758,6 +9758,13 @@ static void browse_callback(AvahiServiceBrowser *b, if (name == NULL || type == NULL || domain == NULL) return; + /* Get the interface name */ + if (!if_indextoname(interface, ifname)) { + debug_printf("Unable to find interface name for interface %d: %s\n", + interface, strerror(errno)); + strncpy(ifname, "Unknown", sizeof(ifname)); + } + debug_printf("Avahi Browser: REMOVE: service '%s' of type '%s' in domain '%s' on interface '%s' (%s)\n", name, type, domain, ifname, protocol != AVAHI_PROTO_UNSPEC ? -- 2.47.2