<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>I am trying to find a way to use the pvar_hash in the Dispatcher module to hash on the Contact URI.  Normally this can be done with using $ct.fields(uri) to hash on and this does work, </div><div><br></div><div>The caveat that I have is that I am using RFC4904 (SIP Connect) with some customers and other customers have a normal Contact URI.<br><br></div><div>RFC4904</div><div>sip:1234567890;tgrp=1098765432;trunk-context=<a href="http://mydomain.com@10.10.10.10:5060">mydomain.com@10.10.10.10:5060</a></div><div><br></div><div>Normal</div><div><a href="http://sip:1234567890@10.10.10.10:5060">sip:1234567890@10.10.10.10:5060</a></div><div><br></div><div>I am looking for a way to be able to identify if the Contact URI has the TGRP parameter, and if it does build the hash with the SIP URI starting at the tgrp, ie </div><div>tgrp=1098765432;trunk-context=<a href="http://mydomain.com@192.168.1.122:5076">mydomain.com@192.168.1.122:5076</a><br></div><div><br></div><div>If it doesn't have the TGRP parameter, build the hash with the full contact.</div><div><br></div><div>I tried with this logic</div><div><br></div><div><div>modparam("dispatcher", "hash_pvar", "$var(contacthash)") </div></div><div><br></div><div><div>        if (is_method("REGISTER|INVITE")) {</div><div>                $var(contacturi) = $ct.fields(uri);</div><div>                $var(str) = "tgrp=";</div><div>                $var(str2) = "/sip:*;tgrp/tgrp/g";</div><div>                if ($(var(contacturi){s.index, $var(str)}) != NULL){</div><div>                        xlog("found $var(str) in $var(contacturi)\n");</div><div>                        $var(contacthash)=$(var(contacturi){re.subst,$var(str2)});</div><div>                }</div><div>                else {</div><div>                        xlog("did not find $var(str) in $var(contacturi)\n");</div><div>                        $var(contacthash) = $(var(contacturi));</div><div>                }</div></div><div>                ds_select_dst(3, 7, , "default", 1);<br></div><div>                 t_relay()</div><div>                exit</div><div>           }</div><div><br></div><div>I am seeing that the hash is still being created on the full Contact</div><div><br></div><div>DBG:core:parse_headers: flags=ffffffffffffffff</div><div>found tgrp= in sip:1234567890;tgrp=1098765432;trunk-context=<a href="http://mydomain.com@192.168.1.122:5076">mydomain.com@192.168.1.122:5076</a></div><div>DBG:core:tr_eval_re: Trying to apply regexp [/sip:*;tgrp/tgrp/g] on : [sip:1234567890;tgrp=1098765432;trunk-context=<a href="http://mydomain.com@192.168.1.122:5076">mydomain.com@192.168.1.122:5076</a>]</div><div>DBG:core:tr_eval_re: yay, we can use the pre-compile regexp</div><div>DBG:core:subst_run: running. r=1</div><div>DBG:core:subst_str: no match</div><div>DBG:core:tr_eval_re: no match for subst expression</div><div>DBG:core:grep_sock_info_ext: checking if host==us: 14==14 &&  [10.255.100.241] == [10.255.100.240]</div><div>DBG:core:grep_sock_info_ext: checking if port 5060 matches port 5060</div><div>DBG:core:grep_sock_info_ext: checking if host==us: 14==14 &&  [10.255.100.241] == [10.255.100.241]</div><div>DBG:core:grep_sock_info_ext: checking if port 5060 matches port 5060</div><div>DBG:core:comp_scriptvar: str 20: <a href="http://mydomain.com">mydomain.com</a></div><div>DBG:dispatcher:w_ds_select: ds_select: 3 7 1 1</div><div>DBG:dispatcher:ds_select_dst: set [3], using alg [7], size [3], used size [2], active size [3]</div><div><b>DBG:dispatcher:ds_hash_pvar: Hashing sip:1234567890;tgrp=1098765432;trunk-context=<a href="http://mydomain.com@192.168.1.122:5076">mydomain.com@192.168.1.122:5076</a>!</b></div><div>DBG:dispatcher:ds_select_dst: hash [1435049604], candidate [-1], weight sum [20]</div><div>DBG:dispatcher:ds_select_dst: candidate is [0]</div><div>DBG:dispatcher:ds_select_dst: using destination [0]</div><div>DBG:dispatcher:ds_select_dst: selected [7-3/0] <sip:<a href="http://sbc1.sbcdomain.com">sbc1.sbcdomain.com</a>> </div><div><br></div><div>I am expecting to see the hash as <b>tgrp=1098765432;trunk-context=<a href="http://mydomain.com@192.168.1.122:5076">mydomain.com@192.168.1.122:5076</a>!</b></div><div>that way it matches no matter what number is sent in the User field.</div><div><br></div><div>Thank you.</div><div><br></div><div>Kevin</div></div></div></div></div></div></div></div></div></div></div></div></div></div>