chiark / gitweb /
resolved: DNSKEY records
[elogind.git] / src / resolve / resolved-dns-transaction.c
index faa1de9143a275b525d77b0a6f5aecbbb0ab5bcc..48da432a1200f94fb2b6105801e790aa24eaae8d 100644 (file)
@@ -465,12 +465,19 @@ int dns_transaction_go(DnsTransaction *t) {
         t->cached = dns_answer_unref(t->cached);
         t->cached_rcode = 0;
 
-        /* First, let's try the cache */
+        /* Before trying the cache, let's make sure we figured out a
+         * server to use. Should this cause a change of server this
+         * might flush the cache. */
+        dns_scope_get_dns_server(t->scope);
+
+        /* Let's then prune all outdated entries */
         dns_cache_prune(&t->scope->cache);
+
         r = dns_cache_lookup(&t->scope->cache, t->question, &t->cached_rcode, &t->cached);
         if (r < 0)
                 return r;
         if (r > 0) {
+                log_debug("Cache hit!");
                 if (t->cached_rcode == DNS_RCODE_SUCCESS)
                         dns_transaction_complete(t, DNS_TRANSACTION_SUCCESS);
                 else
@@ -478,6 +485,8 @@ int dns_transaction_go(DnsTransaction *t) {
                 return 0;
         }
 
+        log_debug("Cache miss!");
+
         /* Otherwise, we need to ask the network */
         r = dns_transaction_make_packet(t);
         if (r == -EDOM) {