diff options
author | Daniel Mack <daniel@zonque.org> | 2015-08-04 14:12:46 +0200 |
---|---|---|
committer | Daniel Mack <daniel@zonque.org> | 2015-12-08 16:51:39 +0100 |
commit | 90325e8c2e559a21ef0bc2f26b844c140faf8020 (patch) | |
tree | 5b5592f298b51202c1bc83e29813b48a2870c113 /src/resolve | |
parent | 23502de3b0891455c8ce499a9eb61b69d060a829 (diff) |
resolved: flush keys when DNS_RESOURCE_KEY_CACHE_FLUSH is set
In mDNS, DNS_RESOURCE_KEY_CACHE_FLUSH denotes whether other records with the
same key should be flushed from the cache.
Diffstat (limited to 'src/resolve')
-rw-r--r-- | src/resolve/resolved-dns-cache.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/resolve/resolved-dns-cache.c b/src/resolve/resolved-dns-cache.c index bcb9994a8c..2179a61890 100644 --- a/src/resolve/resolved-dns-cache.c +++ b/src/resolve/resolved-dns-cache.c @@ -459,7 +459,12 @@ int dns_cache_put( /* Second, add in positive entries for all contained RRs */ for (i = 0; i < MIN(max_rrs, answer->n_rrs); i++) { - r = dns_cache_put_positive(c, answer->items[i].rr, authenticated, timestamp, owner_family, owner_address); + DnsResourceRecord *rr = answer->items[i].rr; + + if (rr->key->cache_flush) + dns_cache_remove(c, rr->key); + + r = dns_cache_put_positive(c, rr, authenticated, timestamp, owner_family, owner_address); if (r < 0) goto fail; } |