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) {
|
static void dns_transaction_tentative(DnsTransaction *t, DnsPacket *p) {
|
||||||
_cleanup_free_ char *pretty = NULL;
|
_cleanup_free_ char *pretty = NULL;
|
||||||
DnsZoneItem *z;
|
DnsZoneItem *z;
|
||||||
Iterator i;
|
|
||||||
|
|
||||||
assert(t);
|
assert(t);
|
||||||
assert(p);
|
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.");
|
log_debug("We have the lexicographically smaller IP address and thus lost in the conflict.");
|
||||||
|
|
||||||
t->block_gc++;
|
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);
|
dns_zone_item_conflict(z);
|
||||||
|
}
|
||||||
t->block_gc--;
|
t->block_gc--;
|
||||||
|
|
||||||
dns_transaction_gc(t);
|
dns_transaction_gc(t);
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
/* Never allow more than 1K entries */
|
/* Never allow more than 1K entries */
|
||||||
#define ZONE_MAX 1024
|
#define ZONE_MAX 1024
|
||||||
|
|
||||||
static void dns_zone_item_probe_stop(DnsZoneItem *i) {
|
void dns_zone_item_probe_stop(DnsZoneItem *i) {
|
||||||
DnsTransaction *t;
|
DnsTransaction *t;
|
||||||
assert(i);
|
assert(i);
|
||||||
|
|
||||||
|
|
|
@ -76,3 +76,5 @@ int dns_zone_check_conflicts(DnsZone *zone, DnsResourceRecord *rr);
|
||||||
int dns_zone_verify_conflicts(DnsZone *zone, DnsResourceKey *key);
|
int dns_zone_verify_conflicts(DnsZone *zone, DnsResourceKey *key);
|
||||||
|
|
||||||
void dns_zone_verify_all(DnsZone *zone);
|
void dns_zone_verify_all(DnsZone *zone);
|
||||||
|
|
||||||
|
void dns_zone_item_probe_stop(DnsZoneItem *i);
|
||||||
|
|
Loading…
Reference in New Issue