--- a/libpurple/protocols/bonjour/mdns_dnsapi.c Sat Jan 30 05:23:50 2021 -0500
+++ b/libpurple/protocols/bonjour/mdns_dnsapi.c Thu Feb 04 22:39:42 2021 -0500
@@ -307,22 +307,29 @@
_mdns_null_query_parse(gpointer _data)
DnsAPIRecordData *data = _data;
- PDNS_RECORD pDnsRecord = data->dns_record;
+ PDNS_RECORD pDnsRecord = NULL; BonjourBuddy *bb = (BonjourBuddy *)data->context;
Win32BuddyImplData *idata = bb->mdns_impl_data;
g_return_val_if_fail(idata != NULL, G_SOURCE_REMOVE);
- /* } else if (flags & kDNSServiceFlagsAdd && rrtype == kDNSServiceType_NULL) { */
- /* Buddy Icon response */
+ for (pDnsRecord = data->dns_record; pDnsRecord; + pDnsRecord = pDnsRecord->pNext) { + if (pDnsRecord->wType == DNS_TYPE_NULL) { + /* Buddy Icon response */ + bonjour_buddy_got_buddy_icon(bb, pDnsRecord->Data.Null.Data, + pDnsRecord->Data.Null.dwByteCount); - /* bonjour_buddy_got_buddy_icon(bb, rdata, rdlen); */
+ /* We've got what we need; stop listening */ + DnsStopMulticastQuery(idata->null_query); + g_clear_pointer(&idata->null_query, g_free); - /* We've got what we need; stop listening */
- DnsStopMulticastQuery(idata->null_query);
- g_clear_pointer(&idata->null_query, g_free);
+ if (data->dns_record) { + DnsRecordListFree(data->dns_record, DnsFreeRecordList);