Module: kamailio Branch: master Commit: d0fc93546dcfb160716369bf04f058cac32dec5c URL: https://github.com/kamailio/kamailio/commit/d0fc93546dcfb160716369bf04f058ca...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: 2025-07-18T09:34:33+02:00
core: dns cache - destroy new entry only when lot linked to the list
---
Modified: src/core/dns_cache.c
---
Diff: https://github.com/kamailio/kamailio/commit/d0fc93546dcfb160716369bf04f058ca... Patch: https://github.com/kamailio/kamailio/commit/d0fc93546dcfb160716369bf04f058ca...
---
diff --git a/src/core/dns_cache.c b/src/core/dns_cache.c index cb343a81184..9ea774705ee 100644 --- a/src/core/dns_cache.c +++ b/src/core/dns_cache.c @@ -1928,11 +1928,13 @@ inline static struct dns_hash_entry *dns_cache_do_request(str *name, int type) } } if(add_record) { - dns_cache_add_unsafe(r); /* refcnt++ inside */ - if(atomic_get(&r->refcnt) == 0) { - /* if cache adding failed and nobody else is interested - * destroy this entry */ - dns_destroy_entry(r); + if(dns_cache_add_unsafe(r) < 0) { + /* refcnt++ inside */ + if(atomic_get(&r->refcnt) <= 0) { + /* if cache adding failed and nobody else is interested + * destroy this entry */ + dns_destroy_entry(r); + } } if(old) { _dns_hash_remove(old); @@ -2034,11 +2036,13 @@ inline static struct dns_hash_entry *dns_cache_do_request(str *name, int type) } } if(add_record) { - dns_cache_add_unsafe(r); /* refcnt++ inside */ - if(atomic_get(&r->refcnt) == 0) { - /* if cache adding failed and nobody else is interested - * destroy this entry */ - dns_destroy_entry(r); + if(dns_cache_add_unsafe(r) < 0) { + /* refcnt++ inside */ + if(atomic_get(&r->refcnt) <= 0) { + /* if cache adding failed and nobody else is interested + * destroy this entry */ + dns_destroy_entry(r); + } } if(old) { _dns_hash_remove(old);