diff options
author | msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be> | 2014-02-19 20:15:53 +0000 |
---|---|---|
committer | msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be> | 2014-02-19 20:15:53 +0000 |
commit | 5353e5ee0063264ee4a557a98a19a9d0a7d2b053 (patch) | |
tree | 6c577cc4e7acdc707e9fdddca490235ffb82dd49 /backend/dnssd.c | |
parent | 7b466f29e8bb5cc3ffbb7ff5167f4befbed5f7d4 (diff) | |
download | cups-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.c | 11 |
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; } } |