chiark / gitweb /
resolved: actually, the peer with the lower IP address wins conflicts
authorLennart Poettering <lennart@poettering.net>
Sun, 10 Aug 2014 20:48:16 +0000 (22:48 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 11 Aug 2014 13:06:22 +0000 (15:06 +0200)
src/resolve/resolved-dns-transaction.c
src/resolve/resolved-dns-zone.c

index dfed74dc9147d4deb253588bf4fdf3252707d372..990b1f2e43b5a66f1811610228755ffab09cb37b 100644 (file)
@@ -137,12 +137,12 @@ static void dns_transaction_tentative(DnsTransaction *t, DnsPacket *p) {
 
         /* RFC 4795, Section 4.1 says that the peer with the
          * lexicographically smaller IP address loses */
-        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.");
+        if (memcmp(&p->sender, &p->destination, FAMILY_ADDRESS_SIZE(p->family)) >= 0) {
+                log_debug("Peer has lexicographically larger IP address and thus lost in the conflict.");
                 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++;
         while ((z = set_first(t->zone_items))) {
index ebbd1e2bf115f8580fc3f688c6176e6291cb11f9..370ecefd790b861fe75fd9d664ea0a5bb4f38cd2 100644 (file)
@@ -527,7 +527,7 @@ void dns_zone_item_ready(DnsZoneItem *i) {
                 /* The probe got a successful reply. If we so far
                  * weren't established we just give up. If we already
                  * were established, and the peer has the
-                 * lexicographically smaller IP address we continue
+                 * lexicographically larger IP address we continue
                  * and defend it. */
 
                 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;
                 } else {
                         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)
-                                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) {