[SR-Users] dmq_is_from_node() issue

Asgaroth 00asgaroth00 at gmail.com
Wed Jul 22 16:25:58 CEST 2015


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
>




More information about the sr-users mailing list