X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fresolve%2Fresolved-dns-transaction.c;h=48da432a1200f94fb2b6105801e790aa24eaae8d;hb=8db0d2f5c37e7e8f5bfce016cfdad7947a3ea939;hp=faa1de9143a275b525d77b0a6f5aecbbb0ab5bcc;hpb=9a015429b3bbfe1c2802570c1621e73d6cb57ac3;p=elogind.git diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c index faa1de914..48da432a1 100644 --- a/src/resolve/resolved-dns-transaction.c +++ b/src/resolve/resolved-dns-transaction.c @@ -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) {