Blob Blame History Raw
diff -up cups-1.7.1/backend/dnssd.c.avahi-browse cups-1.7.1/backend/dnssd.c
--- cups-1.7.1/backend/dnssd.c.avahi-browse	2012-12-12 20:54:21.000000000 +0000
+++ cups-1.7.1/backend/dnssd.c	2014-02-11 12:44:54.785319324 +0000
@@ -95,6 +95,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 */
 
 
@@ -345,6 +346,7 @@ main(int  argc,				/* I - Number of comm
     return (1);
   }
 
+  browsers = 6;
   avahi_service_browser_new(client, AVAHI_IF_UNSPEC,
 			    AVAHI_PROTO_UNSPEC,
 			    "_fax-ipp._tcp", NULL, 0,
@@ -559,7 +561,11 @@ main(int  argc,				/* I - Number of comm
       fprintf(stderr, "DEBUG: sent=%d, count=%d\n", sent, count);
 
       if (sent == cupsArrayCount(devices))
-	break;
+#ifdef HAVE_AVAHI
+	  if (browsers == 0)
+	      /* All service browsers have finished */
+#endif /* HAVE_AVAHI */
+	      break;
     }
   }
 
@@ -710,9 +716,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;
   }
 }