mirror of
https://github.com/systemd/systemd.git
synced 2025-03-21 02:50:18 +03:00
resolved: make sure we don't mark the wrong zone RRs conflicting
This commit is contained in:
parent
2fb3034cb2
commit
3ef64445cd
@ -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);
|
||||
|
@ -28,7 +28,7 @@
|
||||
/* Never allow more than 1K entries */
|
||||
#define ZONE_MAX 1024
|
||||
|
||||
static void dns_zone_item_probe_stop(DnsZoneItem *i) {
|
||||
void dns_zone_item_probe_stop(DnsZoneItem *i) {
|
||||
DnsTransaction *t;
|
||||
assert(i);
|
||||
|
||||
|
@ -76,3 +76,5 @@ int dns_zone_check_conflicts(DnsZone *zone, DnsResourceRecord *rr);
|
||||
int dns_zone_verify_conflicts(DnsZone *zone, DnsResourceKey *key);
|
||||
|
||||
void dns_zone_verify_all(DnsZone *zone);
|
||||
|
||||
void dns_zone_item_probe_stop(DnsZoneItem *i);
|
||||
|
Loading…
x
Reference in New Issue
Block a user