<div dir="ltr">Hi,<div><br></div><div>This is expected. The point of DMQ is to enable dynamic scaling without having to define every node in advance in Kamailio config.</div><div><br></div><div>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).</div><div><br></div><div>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:</div><div><br></div><div><div>        if (method == "KDMQ") {</div><div>                if ($Rp == 5070) {</div><div>                        dmq_handle_message();<br></div><div>                } else {</div><div>                        drop;</div><div>                }</div><div>        }</div></div><div><br></div><div>Do this help? Or is there something else you're looking to achieve?</div><div><br></div><div>Cheers,</div><div>Charles</div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On 22 July 2015 at 15:22, Asgaroth <span dir="ltr"><<a href="mailto:00asgaroth00@gmail.com" target="_blank">00asgaroth00@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi All,<br>
<br>
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.<br>
<br>
I have the following snippet in my main routing block:<br>
<br>
if(is_method("KDMQ")) {<br>
        if (dmq_is_from_node()) {<br>
            dmq_handle_message();<br>
            exit;<br>
        } else {<br>
            xlog("L_INFO", "KDMQ message recieved from node not on our bus!! ($si:$sp) Dropping.");<br>
            exit;<br>
        }<br>
    }<br>
<br>
I have the following dmq module parameters enabled for dmq:<br>
<br>
modparam("dmq", "server_address", DMQ_ADDRESS)<br>
modparam("dmq", "notification_address", "sip:<a href="http://lb.domain.com:5060" rel="noreferrer" target="_blank">lb.domain.com:5060</a>")<br>
modparam("dmq", "multi_notify", 1)<br>
modparam("dmq", "num_workers", 4)<br>
<br>
DMQ_ADDRESS is set to each of the addresses in the <a href="http://lb.domain.com" rel="noreferrer" target="_blank">lb.domain.com</a> for each local kamailio instance<br>
<br>
<a href="http://lb.domain.com" rel="noreferrer" target="_blank">lb.domain.com</a> resolves to the following addresses:<br>
    10.6.0.109<br>
    10.6.0.110<br>
    10.6.0.111<br>
<br>
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:<br>
<br>
kamailio[26657]: ERROR: dmq [notification_peer.c:588]: notification_resp_callback_f(): deleting server sip:<a href="http://10.6.0.111:5060" rel="noreferrer" target="_blank">10.6.0.111:5060</a> because of failed request<br>
kamailio[26657]: ERROR: dmq [notification_peer.c:588]: notification_resp_callback_f(): deleting server sip:<a href="http://10.6.0.110:5060" rel="noreferrer" target="_blank">10.6.0.110:5060</a> because of failed request<br>
<br>
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:<br>
<br>
kamailio[26656]: INFO: <script>: KDMQ message recieved from node not on our bus!! (<a href="http://10.6.0.110:5060" rel="noreferrer" target="_blank">10.6.0.110:5060</a>) Dropping.<br>
kamailio[26656]: INFO: <script>: KDMQ message recieved from node not on our bus!! (<a href="http://10.6.0.111:5060" rel="noreferrer" target="_blank">10.6.0.111:5060</a>) Dropping.<br>
<br>
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.<br>
<br>
Any suggestions/tips would be greatly appreciated.<br>
<br>
Thanks<br>
<br>
<br>
_______________________________________________<br>
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list<br>
<a href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a><br>
<a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
</blockquote></div><br><br clear="all"><div><br></div>
</div></div>

<br>
<div><font face="Helvetica, Arial, sans-serif"><font size="2"><b>** We're rebranding! Learn more <a href="http://www.sipcentric.com/2015/07/were-rebranding/" target="_blank">here</a> **</b></font></font></div><div><br></div><font face="Helvetica, Arial, sans-serif"><font size="2"><span style="font-size:10pt"><a href="http://www.sipcentric.com/" title="blocked::http://www.sipcentric.com/" target="_blank">www.sipcentric.com</a><br>
            <br>
            Follow us on twitter <a href="http://twitter.com/sipcentric" title="blocked::http://twitter.com/sipcentric" target="_blank">@sipcentric</a><br>
            <br>
            <font color="gray">Sipcentric Ltd.
                Company registered in England & Wales no. 7365592.</font> <font color="gray">Registered
                office: Faraday Wharf, Innovation Birmingham Campus, Holt Street, Birmingham Science Park, Birmingham B7 4BB.</font></span></font></font>