Hi, This is expected. The point of DMQ is to enable dynamic scaling without having to define every node in advance in Kamailio config.
You should not use dmq_is_from_node() with dmq_handle_message() - it is not intended to be a security check for KDMQ messages, but for other messages replicated directly in your config (e.g. REGISTER). For KDMQ, you should listen on a dedicated IP and/or port and lock down at network/firewall level. Then your DMQ handling block should look something like: if (method == "KDMQ") { if ($Rp == 5070) { dmq_handle_message(); } else { drop; } } Do this help? Or is there something else you're looking to achieve? Cheers, Charles On 22 July 2015 at 15:22, Asgaroth <00asgarot...@gmail.com> 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@lists.sip-router.org > http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users > -- *** We're rebranding! Learn more here <http://www.sipcentric.com/2015/07/were-rebranding/> *** www.sipcentric.com Follow us on twitter @sipcentric <http://twitter.com/sipcentric> Sipcentric Ltd. Company registered in England & Wales no. 7365592. Registered office: Faraday Wharf, Innovation Birmingham Campus, Holt Street, Birmingham Science Park, Birmingham B7 4BB.
_______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users