resolved: actually, the peer with the lower IP address wins conflicts
This commit is contained in:
parent
3ef64445cd
commit
4d91eec42d
|
@ -137,12 +137,12 @@ static void dns_transaction_tentative(DnsTransaction *t, DnsPacket *p) {
|
||||||
|
|
||||||
/* RFC 4795, Section 4.1 says that the peer with the
|
/* RFC 4795, Section 4.1 says that the peer with the
|
||||||
* lexicographically smaller IP address loses */
|
* lexicographically smaller IP address loses */
|
||||||
if (memcmp(&p->sender, &p->destination, FAMILY_ADDRESS_SIZE(p->family)) < 0) {
|
if (memcmp(&p->sender, &p->destination, FAMILY_ADDRESS_SIZE(p->family)) >= 0) {
|
||||||
log_debug("Peer has lexicographically smaller IP address and thus lost in the conflict.");
|
log_debug("Peer has lexicographically larger IP address and thus lost in the conflict.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
log_debug("We have the lexicographically smaller IP address and thus lost in the conflict.");
|
log_debug("We have the lexicographically larger IP address and thus lost in the conflict.");
|
||||||
|
|
||||||
t->block_gc++;
|
t->block_gc++;
|
||||||
while ((z = set_first(t->zone_items))) {
|
while ((z = set_first(t->zone_items))) {
|
||||||
|
|
|
@ -527,7 +527,7 @@ void dns_zone_item_ready(DnsZoneItem *i) {
|
||||||
/* The probe got a successful reply. If we so far
|
/* The probe got a successful reply. If we so far
|
||||||
* weren't established we just give up. If we already
|
* weren't established we just give up. If we already
|
||||||
* were established, and the peer has the
|
* were established, and the peer has the
|
||||||
* lexicographically smaller IP address we continue
|
* lexicographically larger IP address we continue
|
||||||
* and defend it. */
|
* and defend it. */
|
||||||
|
|
||||||
if (!IN_SET(i->state, DNS_ZONE_ITEM_ESTABLISHED, DNS_ZONE_ITEM_VERIFYING)) {
|
if (!IN_SET(i->state, DNS_ZONE_ITEM_ESTABLISHED, DNS_ZONE_ITEM_VERIFYING)) {
|
||||||
|
@ -535,9 +535,9 @@ void dns_zone_item_ready(DnsZoneItem *i) {
|
||||||
we_lost = true;
|
we_lost = true;
|
||||||
} else {
|
} else {
|
||||||
assert(i->probe_transaction->received);
|
assert(i->probe_transaction->received);
|
||||||
we_lost = memcmp(&i->probe_transaction->received->sender, &i->probe_transaction->received->destination, FAMILY_ADDRESS_SIZE(i->probe_transaction->received->family)) > 0;
|
we_lost = memcmp(&i->probe_transaction->received->sender, &i->probe_transaction->received->destination, FAMILY_ADDRESS_SIZE(i->probe_transaction->received->family)) < 0;
|
||||||
if (we_lost)
|
if (we_lost)
|
||||||
log_debug("Got a successful probe reply for an established RR, and we have a lexicographically lower IP address and thus lost.");
|
log_debug("Got a successful probe reply for an established RR, and we have a lexicographically larger IP address and thus lost.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (we_lost) {
|
if (we_lost) {
|
||||||
|
|
Loading…
Reference in a new issue