- finish(r, -1, AVAHI_PROTO_UNSPEC, AVAHI_RESOLVER_TIMEOUT, NULL);
+ case AVAHI_BROWSER_REMOVE:
+ assert(record);
+ assert(record->key->type == AVAHI_DNS_TYPE_PTR);
+
+ if (r->ptr_record && avahi_record_equal_no_ttl(record, r->ptr_record)) {
+ avahi_record_unref(r->ptr_record);
+ r->ptr_record = NULL;
+ r->flags = flags;
+
+ /** Look for a replacement */
+ avahi_s_record_browser_restart(r->record_browser);
+ start_timeout(r);
+ }
+
+ break;
+
+ case AVAHI_BROWSER_CACHE_EXHAUSTED:
+ case AVAHI_BROWSER_ALL_FOR_NOW:
+ break;
+
+ case AVAHI_BROWSER_FAILURE:
+
+ if (r->retry_with_multicast) {
+ r->retry_with_multicast = 0;
+
+ avahi_s_record_browser_free(r->record_browser);
+ r->record_browser = avahi_s_record_browser_new(r->server, r->interface, r->protocol, r->key, AVAHI_LOOKUP_USE_MULTICAST, record_browser_callback, r);
+
+ if (r->record_browser) {
+ start_timeout(r);
+ break;
+ }
+ }
+
+ r->flags = flags;
+ finish(r, AVAHI_RESOLVER_FAILURE);
+ break;
+ }