Module: kamailio Branch: master Commit: 7d4cd4cac82815c44fafa465efb8f15c51d64810 URL: https://github.com/kamailio/kamailio/commit/7d4cd4cac82815c44fafa465efb8f15c...
Author: Stefan Mititelu stefan.mititelu@net2phone.com Committer: Daniel-Constantin Mierla miconda@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/7d4cd4cac82815c44fafa465efb8f15c... Patch: https://github.com/kamailio/kamailio/commit/7d4cd4cac82815c44fafa465efb8f15c...
---
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;