summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-08-06 17:21:00 +0200
committerLennart Poettering <lennart@poettering.net>2014-08-11 15:06:22 +0200
commit2fb3034cb21c745ed4f9aa4cba57563f7f071466 (patch)
treec49b1f84069cbd67a37f68016b304e8ccf55aed5
parentc02091d23bd746c176220e8492eeb7c4c62c3e55 (diff)
resolved: be a bit more communicative about conflicts
-rw-r--r--src/resolve/resolved-dns-transaction.c8
-rw-r--r--src/resolve/resolved-dns-zone.c11
2 files changed, 15 insertions, 4 deletions
diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c
index e76940e18e..cf2987d192 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 5f250e7ca3..13b1b3c595 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) {