summaryrefslogtreecommitdiff
path: root/backend/dnssd.c
diff options
context:
space:
mode:
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2014-02-19 20:15:53 +0000
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2014-02-19 20:15:53 +0000
commit5353e5ee0063264ee4a557a98a19a9d0a7d2b053 (patch)
tree6c577cc4e7acdc707e9fdddca490235ffb82dd49 /backend/dnssd.c
parent7b466f29e8bb5cc3ffbb7ff5167f4befbed5f7d4 (diff)
downloadcups-5353e5ee0063264ee4a557a98a19a9d0a7d2b053.tar.gz
The dnssd backend did not always report all discovered printers using Avahi
(STR #4365) Keep track of active browsers, don't stop until Avahi gives up. git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11622 a1ca3aef-8c08-0410-bb20-df032aa958be
Diffstat (limited to 'backend/dnssd.c')
-rw-r--r--backend/dnssd.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/backend/dnssd.c b/backend/dnssd.c
index 44084e3ed..bac13b000 100644
--- a/backend/dnssd.c
+++ b/backend/dnssd.c
@@ -80,6 +80,7 @@ static int job_canceled = 0;
static AvahiSimplePoll *simple_poll = NULL;
/* Poll information */
static int got_data = 0; /* Got data from poll? */
+static int browsers = 0; /* Number of running browsers */
#endif /* HAVE_AVAHI */
@@ -330,6 +331,7 @@ main(int argc, /* I - Number of command-line args */
return (1);
}
+ browsers = 6;
avahi_service_browser_new(client, AVAHI_IF_UNSPEC,
AVAHI_PROTO_UNSPEC,
"_fax-ipp._tcp", NULL, 0,
@@ -555,7 +557,11 @@ main(int argc, /* I - Number of command-line args */
fprintf(stderr, "DEBUG: sent=%d, count=%d\n", sent, count);
+#ifdef HAVE_AVAHI
+ if (sent == cupsArrayCount(devices) && browsers == 0)
+#else
if (sent == cupsArrayCount(devices))
+#endif /* HAVE_AVAHI */
break;
}
}
@@ -707,9 +713,12 @@ browse_callback(
break;
case AVAHI_BROWSER_REMOVE:
- case AVAHI_BROWSER_ALL_FOR_NOW:
case AVAHI_BROWSER_CACHE_EXHAUSTED:
break;
+
+ case AVAHI_BROWSER_ALL_FOR_NOW:
+ browsers--;
+ break;
}
}