Module: kamailio
Branch: master
Commit: d79bc9b9b85f247d8b4bca37d2f84d4dcb412730
URL: 
https://github.com/kamailio/kamailio/commit/d79bc9b9b85f247d8b4bca37d2f84d4dcb412730

Author: Daniel-Constantin Mierla <mico...@gmail.com>
Committer: Daniel-Constantin Mierla <mico...@gmail.com>
Date: 2025-06-24T20:40:34+02:00

core: dns - macro wrappers to print more details on dns hash put

---

Modified: src/core/dns_cache.c
Modified: src/core/dns_cache.h

---

Diff:  
https://github.com/kamailio/kamailio/commit/d79bc9b9b85f247d8b4bca37d2f84d4dcb412730.diff
Patch: 
https://github.com/kamailio/kamailio/commit/d79bc9b9b85f247d8b4bca37d2f84d4dcb412730.patch

---

diff --git a/src/core/dns_cache.c b/src/core/dns_cache.c
index 0a2553f58f2..c6dc68a7930 100644
--- a/src/core/dns_cache.c
+++ b/src/core/dns_cache.c
@@ -162,14 +162,15 @@ inline static void dns_destroy_entry_shm_unsafe(struct 
dns_hash_entry *e)
 
 
 /* dec. the internal refcnt and if 0 deletes the entry */
-void dns_hash_put(struct dns_hash_entry *e)
+void dns_hash_put_entry(
+               struct dns_hash_entry *e, const char *fpath, unsigned int line)
 {
        if(e != NULL) {
                if(atomic_dec_and_test(&e->refcnt)) {
                        /* atomic_sub_long(dns_cache_total_used, 
e->total_size); */
                        dns_destroy_entry(e);
                } else if(e->next == NULL && e->prev == NULL) {
-                       LM_WARN("unlinked item %p\n", e);
+                       LM_WARN("unlinked item %p (%s:%u)\n", e, fpath, line);
                }
        }
 }
@@ -177,14 +178,15 @@ void dns_hash_put(struct dns_hash_entry *e)
 
 /* same as above but uses dns_destroy_unsafe (assumes shm_lock held -- tm
  *  optimization) */
-void dns_hash_put_shm_unsafe(struct dns_hash_entry *e)
+void dns_hash_put_entry_shm_unsafe(
+               struct dns_hash_entry *e, const char *fpath, unsigned int line)
 {
        if(e != NULL) {
                if(atomic_dec_and_test(&e->refcnt)) {
                        /* atomic_sub_long(dns_cache_total_used, 
e->total_size); */
                        dns_destroy_entry_shm_unsafe(e);
                } else if(e->next == NULL && e->prev == NULL) {
-                       LM_WARN("unlinked item %p\n", e);
+                       LM_WARN("unlinked item %p (%s:%u)\n", e, fpath, line);
                }
        }
 }
diff --git a/src/core/dns_cache.h b/src/core/dns_cache.h
index d92fd3dc27f..18bb3733730 100644
--- a/src/core/dns_cache.h
+++ b/src/core/dns_cache.h
@@ -193,24 +193,31 @@ int init_dns_cache_stats(int iproc_num);
 #endif
 void destroy_dns_cache(void);
 
+void dns_hash_put_entry(
+               struct dns_hash_entry *e, const char *fpath, unsigned int line);
+void dns_hash_put_entry_shm_unsafe(
+               struct dns_hash_entry *e, const char *fpath, unsigned int line);
 
-void dns_hash_put(struct dns_hash_entry *e);
-void dns_hash_put_shm_unsafe(struct dns_hash_entry *e);
+#define dns_hash_put(e) dns_hash_put_entry(e, __FILE__, __LINE__)
+#define dns_hash_put_shm_unsafe(e) \
+       dns_hash_put_entry_shm_unsafe(e, __FILE__, __LINE__)
 
-inline static void dns_srv_handle_put(struct dns_srv_handle *h)
+inline static void dns_srv_handle_put_helper(
+               struct dns_srv_handle *h, const char *fpath, unsigned int line)
 {
        if(h) {
                if(h->srv) {
-                       dns_hash_put(h->srv);
+                       dns_hash_put_entry(h->srv, fpath, line);
                        h->srv = 0;
                }
                if(h->a) {
-                       dns_hash_put(h->a);
+                       dns_hash_put_entry(h->a, fpath, line);
                        h->a = 0;
                }
        }
 }
 
+#define dns_srv_handle_put(h) dns_srv_handle_put_helper(h, __FILE__, __LINE__)
 
 /** @brief use it when copying, it manually increases the ref cound */
 inline static void dns_srv_handle_ref(struct dns_srv_handle *h)

_______________________________________________
Kamailio - Development Mailing List -- sr-dev@lists.kamailio.org
To unsubscribe send an email to sr-dev-le...@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the 
sender!

Reply via email to