From 2fb3034cb21c745ed4f9aa4cba57563f7f071466 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 6 Aug 2014 17:21:00 +0200 Subject: [PATCH] resolved: be a bit more communicative about conflicts --- src/resolve/resolved-dns-transaction.c | 8 ++++++-- src/resolve/resolved-dns-zone.c | 11 +++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c index e76940e18..cf2987d19 100644 --- a/src/resolve/resolved-dns-transaction.c +++ b/src/resolve/resolved-dns-transaction.c @@ -118,6 +118,7 @@ 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; @@ -127,10 +128,13 @@ static void dns_transaction_tentative(DnsTransaction *t, DnsPacket *p) { if (manager_our_packet(t->scope->manager, p) != 0) return; - log_debug("Transaction on scope %s on %s/%s got tentative packet", + in_addr_to_string(p->family, &p->sender, &pretty); + + log_debug("Transaction on scope %s on %s/%s got tentative packet from %s", dns_protocol_to_string(t->scope->protocol), t->scope->link ? t->scope->link->name : "*", - t->scope->family == AF_UNSPEC ? "*" : af_to_name(t->scope->family)); + t->scope->family == AF_UNSPEC ? "*" : af_to_name(t->scope->family), + pretty); /* RFC 4795, Section 4.1 says that the peer with the * lexicographically smaller IP address loses */ diff --git a/src/resolve/resolved-dns-zone.c b/src/resolve/resolved-dns-zone.c index 5f250e7ca..13b1b3c59 100644 --- a/src/resolve/resolved-dns-zone.c +++ b/src/resolve/resolved-dns-zone.c @@ -530,11 +530,14 @@ void dns_zone_item_ready(DnsZoneItem *i) { * lexicographically smaller IP address we continue * 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)) { + log_debug("Got a successful probe for not yet established RR, we lost."); we_lost = true; - else { + } 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; + 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."); } if (we_lost) { @@ -553,6 +556,7 @@ void dns_zone_item_ready(DnsZoneItem *i) { } static int dns_zone_item_verify(DnsZoneItem *i) { + _cleanup_free_ char *pretty = NULL; int r; assert(i); @@ -560,6 +564,9 @@ static int dns_zone_item_verify(DnsZoneItem *i) { if (i->state != DNS_ZONE_ITEM_ESTABLISHED) return 0; + dns_resource_record_to_string(i->rr, &pretty); + log_debug("Verifying RR %s", strna(pretty)); + i->state = DNS_ZONE_ITEM_VERIFYING; r = dns_zone_item_probe_start(i); if (r < 0) { -- 2.30.2