- avahi_cache_walk(i->cache, s->key, scan_cache_callback, &cbdata);
+ if (!b->dead)
+ avahi_cache_walk(i->cache, b->key, scan_cache_callback, &cbdata);
+}
+
+static void scan_callback(AvahiTimeEvent *e, void *userdata) {
+ AvahiSRecordBrowser *b = userdata;
+ assert(b);
+
+ /* Scan the caches */
+ if (!b->dead)
+ avahi_interface_monitor_walk(b->server->monitor, b->interface, b->protocol, scan_interface_callback, b);
+
+ if (b->scan_time_event) {
+ avahi_time_event_free(b->scan_time_event);
+ b->scan_time_event = NULL;
+ }
+}
+
+void avahi_s_record_browser_restart(AvahiSRecordBrowser *b) {
+ assert(b);
+
+ if (!b->scan_time_event) {
+ b->scan_time_event = avahi_time_event_new(b->server->time_event_queue, NULL, scan_callback, b);
+ assert(b->scan_time_event);
+ }
+
+ avahi_server_post_query(b->server, b->interface, b->protocol, b->key);