if (!r->srv_record) {
r->srv_record = avahi_record_ref(record);
changed = 1;
-
- assert(!r->record_browser_a && !r->record_browser_aaaa);
+
+ if (r->record_browser_a) {
+ avahi_s_record_browser_free(r->record_browser_a);
+ r->record_browser_a = NULL;
+ }
+
+ if (r->record_browser_aaaa) {
+ avahi_s_record_browser_free(r->record_browser_aaaa);
+ r->record_browser_aaaa = NULL;
+ }
if (r->address_protocol == AVAHI_PROTO_INET || r->address_protocol == AVAHI_PROTO_UNSPEC) {
AvahiKey *k = avahi_key_new(r->srv_record->data.srv.name, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_A);
} else {
assert(event == AVAHI_BROWSER_REMOVE);
+
switch (record->key->type) {
case AVAHI_DNS_TYPE_SRV:
- if (avahi_record_equal_no_ttl(record, r->srv_record)) {
+ if (r->srv_record && avahi_record_equal_no_ttl(record, r->srv_record)) {
avahi_record_unref(r->srv_record);
r->srv_record = NULL;
case AVAHI_DNS_TYPE_TXT:
- if (avahi_record_equal_no_ttl(record, r->txt_record)) {
+ if (r->txt_record && avahi_record_equal_no_ttl(record, r->txt_record)) {
avahi_record_unref(r->txt_record);
r->txt_record = NULL;
case AVAHI_DNS_TYPE_A:
case AVAHI_DNS_TYPE_AAAA:
- if (avahi_record_equal_no_ttl(record, r->address_record)) {
+ if (r->address_record && avahi_record_equal_no_ttl(record, r->address_record)) {
avahi_record_unref(r->address_record);
r->address_record = NULL;