[SR-Users] dmq_is_from_node() issue

Robert Boisvert rdboisvert at gmail.com
Wed Jul 22 16:49:15 CEST 2015


You might want to consider this function:
http://kamailio.org/docs/modules/4.3.x/modules/dmq.html#dmq.p.multi_notify

On Wed, Jul 22, 2015 at 10:25 AM, Asgaroth <00asgaroth00 at gmail.com> wrote:

> sorry, I forgot to mention, this is with Kamailio v4.3.1:
>
> # kamailio -V
> version: kamailio 4.3.1 (x86_64/linux) f38e67
> flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS,
> DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC,
> F_MALLOC, DBG_F_MALLOC, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE,
> USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
> ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16,
> MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
> poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
> id: f38e67
> compiled on 18:15:23 Jul 20 2015 with gcc 4.4.7
>
> Thanks
>
>
> On 22/07/2015 15:22, Asgaroth wrote:
>
>> Hi All,
>>
>> I have an issue with the dmq_is_from_node() function, whereby it does not
>> detect a node is on the bus if it has been removed from its "table" due to
>> previously failed, i presume, ping requests.
>>
>> I have the following snippet in my main routing block:
>>
>> if(is_method("KDMQ")) {
>>         if (dmq_is_from_node()) {
>>             dmq_handle_message();
>>             exit;
>>         } else {
>>             xlog("L_INFO", "KDMQ message recieved from node not on our
>> bus!! ($si:$sp) Dropping.");
>>             exit;
>>         }
>>     }
>>
>> I have the following dmq module parameters enabled for dmq:
>>
>> modparam("dmq", "server_address", DMQ_ADDRESS)
>> modparam("dmq", "notification_address", "sip:lb.domain.com:5060")
>> modparam("dmq", "multi_notify", 1)
>> modparam("dmq", "num_workers", 4)
>>
>> DMQ_ADDRESS is set to each of the addresses in the lb.domain.com for
>> each local kamailio instance
>>
>> lb.domain.com resolves to the following addresses:
>>     10.6.0.109
>>     10.6.0.110
>>     10.6.0.111
>>
>> If I start up the 1st instance of kamailio and do not start the other 2
>> within the default ping timout then I get the expected log message of dmq
>> removing the nodes from its table, for example:
>>
>> kamailio[26657]: ERROR: dmq [notification_peer.c:588]:
>> notification_resp_callback_f(): deleting server sip:10.6.0.111:5060
>> because of failed request
>> kamailio[26657]: ERROR: dmq [notification_peer.c:588]:
>> notification_resp_callback_f(): deleting server sip:10.6.0.110:5060
>> because of failed request
>>
>> However, if I then start one, or both, of the other nodes, then the KDMQ
>> requests are dropped due to my snippet above, I presume, because
>> dmq_is_from_node() checks its "active" table. See messages below as an
>> example of the above snippet in action:
>>
>> kamailio[26656]: INFO: <script>: KDMQ message recieved from node not on
>> our bus!! (10.6.0.110:5060) Dropping.
>> kamailio[26656]: INFO: <script>: KDMQ message recieved from node not on
>> our bus!! (10.6.0.111:5060) Dropping.
>>
>> Is this expected behaviour from the dmq_is_from_node() function? I would
>> have expected it to always check the addresses resolved in the notification
>> address, or am I using this function in a manner not intended.
>>
>> Any suggestions/tips would be greatly appreciated.
>>
>> Thanks
>>
>>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20150722/4c6b1e55/attachment.html>


More information about the sr-users mailing list