X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fresolve%2Fresolved-dns-transaction.c;h=dfed74dc9147d4deb253588bf4fdf3252707d372;hb=3ef64445cdf12d7703aa79b39f3c170037d587c7;hp=cf2987d1925cb4d922fc1e56f7e7e5e92a3ff240;hpb=2fb3034cb21c745ed4f9aa4cba57563f7f071466;p=elogind.git diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c index cf2987d19..dfed74dc9 100644 --- a/src/resolve/resolved-dns-transaction.c +++ b/src/resolve/resolved-dns-transaction.c @@ -120,7 +120,6 @@ static void dns_transaction_stop(DnsTransaction *t) { static void dns_transaction_tentative(DnsTransaction *t, DnsPacket *p) { _cleanup_free_ char *pretty = NULL; DnsZoneItem *z; - Iterator i; assert(t); assert(p); @@ -146,8 +145,15 @@ static void dns_transaction_tentative(DnsTransaction *t, DnsPacket *p) { log_debug("We have the lexicographically smaller IP address and thus lost in the conflict."); t->block_gc++; - SET_FOREACH(z, t->zone_items, i) + while ((z = set_first(t->zone_items))) { + /* First, make sure the zone item drops the reference + * to us */ + dns_zone_item_probe_stop(z); + + /* Secondly, report this as conflict, so that we might + * look for a different hostname */ dns_zone_item_conflict(z); + } t->block_gc--; dns_transaction_gc(t);