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

Author: Stefan Mititelu <stefan.mitit...@net2phone.com>
Committer: Daniel-Constantin Mierla <mico...@gmail.com>
Date: 2025-02-21T08:53:34+01:00

dmq_usrloc: new value for replicate_socket_info

To always use local dmq server_socket in "Socket:" field of replicated
contacts.

---

Modified: src/modules/dmq_usrloc/doc/dmq_usrloc_admin.xml
Modified: src/modules/dmq_usrloc/usrloc_sync.c
Modified: src/modules/dmq_usrloc/usrloc_sync.h

---

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

---

diff --git a/src/modules/dmq_usrloc/doc/dmq_usrloc_admin.xml 
b/src/modules/dmq_usrloc/doc/dmq_usrloc_admin.xml
index cd1b5279d86..b94947e2c77 100644
--- a/src/modules/dmq_usrloc/doc/dmq_usrloc_admin.xml
+++ b/src/modules/dmq_usrloc/doc/dmq_usrloc_admin.xml
@@ -271,6 +271,11 @@ modparam("dmq_usrloc", "usrloc_domain", "my_domain")
                                2 - enabled, replicate socket by socket name
                        </para>
                        </listitem>
+                       <listitem>
+                       <para>
+                               3 - enabled, use local socket from dmq 
server_socket modparam
+                       </para>
+                       </listitem>
                        </itemizedlist>
                </para>
                <para>
diff --git a/src/modules/dmq_usrloc/usrloc_sync.c 
b/src/modules/dmq_usrloc/usrloc_sync.c
index ab134872d93..00cf877e64b 100644
--- a/src/modules/dmq_usrloc/usrloc_sync.c
+++ b/src/modules/dmq_usrloc/usrloc_sync.c
@@ -38,6 +38,7 @@ static str dmq_400_rpl = str_init("Bad Request");
 static str dmq_500_rpl = str_init("Server Internal Error");
 
 static int *usrloc_dmq_recv = 0;
+static struct socket_info *dmq_server_socket_local = 0;
 
 dmq_api_t usrloc_dmqb;
 dmq_peer_t *usrloc_dmq_peer = NULL;
@@ -287,6 +288,7 @@ void usrloc_get_all_ucontact(dmq_node_t *node)
 int usrloc_dmq_initialize()
 {
        dmq_peer_t not_peer;
+       str dmq_server_socket;
 
        /* load the DMQ API */
        if(dmq_load_api(&usrloc_dmqb) != 0) {
@@ -308,6 +310,15 @@ int usrloc_dmq_initialize()
        } else {
                LM_DBG("dmq peer registered\n");
        }
+
+       /* get local socket from DMQ API */
+       dmq_server_socket = usrloc_dmqb.get_dmq_server_socket();
+       dmq_server_socket_local = lookup_local_socket(&dmq_server_socket);
+       if(dmq_server_socket_local == 0) {
+               LM_DBG("dmq local server socket <%.*s> not found ...ignoring\n",
+                               dmq_server_socket.len, dmq_server_socket.s);
+       }
+
        return 0;
 error:
        return -1;
@@ -430,8 +441,10 @@ static int usrloc_dmq_execute_action(srjson_t 
*jdoc_action, dmq_node_t *node)
        ci.ruid = ruid;
        ci.c = &c;
        ci.received = received;
-       if(_dmq_usrloc_replicate_socket_info
-                       & (DMQ_USRLOC_REPLICATE_SOCKET | 
DMQ_USRLOC_REPLICATE_SOCKNAME))
+       if(_dmq_usrloc_replicate_socket_info == 
DMQ_USRLOC_REPLICATE_SOCKET_LOCAL) {
+               sock = dmq_server_socket_local;
+       }
+       if(_dmq_usrloc_replicate_socket_info != 0)
                ci.sock = sock;
        ci.path = &path;
        ci.expires = expires;
diff --git a/src/modules/dmq_usrloc/usrloc_sync.h 
b/src/modules/dmq_usrloc/usrloc_sync.h
index cb55f3bb344..85cfc27e414 100644
--- a/src/modules/dmq_usrloc/usrloc_sync.h
+++ b/src/modules/dmq_usrloc/usrloc_sync.h
@@ -31,6 +31,7 @@
 
 #define DMQ_USRLOC_REPLICATE_SOCKET 1
 #define DMQ_USRLOC_REPLICATE_SOCKNAME 2
+#define DMQ_USRLOC_REPLICATE_SOCKET_LOCAL 3
 
 extern usrloc_api_t dmq_ul;
 

_______________________________________________
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