diff options
author | Tom Gundersen <teg@jklm.no> | 2016-01-18 23:10:53 +0100 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2016-01-18 23:10:53 +0100 |
commit | 6228dc518f13f189a68144ab46bf055469615e3b (patch) | |
tree | b3c826afd4175dcb9408efacff8e8758961e1eee /src/resolve/resolved-dns-cache.c | |
parent | 7a9216397487977f4743afa52004d82c174dab10 (diff) | |
parent | bc7669cff9b7884af28814e3e47f1711315da482 (diff) |
Merge pull request #2326 from poettering/dnssec15
Fifteenth batch of DNSSEC patches
Diffstat (limited to 'src/resolve/resolved-dns-cache.c')
-rw-r--r-- | src/resolve/resolved-dns-cache.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/resolve/resolved-dns-cache.c b/src/resolve/resolved-dns-cache.c index 301f383809..fdb34d11df 100644 --- a/src/resolve/resolved-dns-cache.c +++ b/src/resolve/resolved-dns-cache.c @@ -247,6 +247,19 @@ static int dns_cache_link_item(DnsCache *c, DnsCacheItem *i) { first = hashmap_get(c->by_key, i->key); if (first) { + _cleanup_(dns_resource_key_unrefp) DnsResourceKey *k = NULL; + + /* Keep a reference to the original key, while we manipulate the list. */ + k = dns_resource_key_ref(first->key); + + /* Now, try to reduce the number of keys we keep */ + dns_resource_key_reduce(&first->key, &i->key); + + if (first->rr) + dns_resource_key_reduce(&first->rr->key, &i->key); + if (i->rr) + dns_resource_key_reduce(&i->rr->key, &i->key); + LIST_PREPEND(by_key, first, i); assert_se(hashmap_replace(c->by_key, first->key, first) >= 0); } else { |