-static void record_resolver_callback(AvahiRecordResolver*rr, gint interface, guchar protocol, AvahiBrowserEvent event, AvahiRecord *record, gpointer userdata) {
+static void finish(AvahiAddressResolver *r, AvahiIfIndex interface, AvahiProtocol protocol, AvahiResolverEvent event, AvahiRecord *record) {
+ g_assert(r);
+
+ avahi_record_browser_free(r->record_browser);
+ r->record_browser = NULL;
+
+ if (r->time_event) {
+ avahi_time_event_queue_remove(r->server->time_event_queue, r->time_event);
+ r->time_event = NULL;
+ }
+
+ r->callback(r, interface, protocol, event, &r->address, record ? record->data.ptr.name : NULL, r->userdata);
+}
+
+static void record_browser_callback(AvahiRecordBrowser*rr, AvahiIfIndex interface, AvahiProtocol protocol, AvahiBrowserEvent event, AvahiRecord *record, gpointer userdata) {