<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Calibri" size="2"><span style="font-size:11pt;">
<div><font color="#1F497D">Hi, please find below what you requested.</font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D">@Daniel: yes, I did ts_store() after relaying for both hops, but for the second call which should call account2, $ru is overwritten to account1 after t_continue </font></div>
<div><font face="Times New Roman" size="3" color="#1F497D"><span style="font-size:12pt;"> </span></font></div>
<div><font color="#1F497D">@Federico: as you requested, here is my route[LOCATION] and please the attached Kamailio log.</font></div>
<div><font color="#1F497D"># USER location service</font></div>
<div><font color="#1F497D">route[LOCATION] </font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D">#!ifdef WITH_SPEEDDIAL</font></div>
<div><font color="#1F497D">        # search for short dialing - 2-digit extension</font></div>
<div><font color="#1F497D">        if($rU=~"^[0-9][0-9]$")</font></div>
<div><font color="#1F497D">                if(sd_lookup("speed_dial"))</font></div>
<div><font color="#1F497D">                        route(SIPOUT);</font></div>
<div><font color="#1F497D">#!endif</font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D">#!ifdef WITH_ALIASDB</font></div>
<div><font color="#1F497D">        # search in DB-based aliases</font></div>
<div><font color="#1F497D">        if(alias_db_lookup("dbaliases"))</font></div>
<div><font color="#1F497D">                route(SIPOUT);</font></div>
<div><font color="#1F497D">#!endif</font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D">#!ifdef WITH_FORK</font></div>
<div><font color="#1F497D">        if($rU == "9999") </font></div>
<div><font color="#1F497D">                route(FORK);</font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D">#!endif</font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D">#!ifdef WITH_PDT</font></div>
<div><font color="#1F497D">        xdbg("before pdt $rU\n");</font></div>
<div><font color="#1F497D">        #prefix2domain("0", "1");</font></div>
<div><font color="#1F497D">        xdbg("after pdt $rU\n");</font></div>
<div><font color="#1F497D">#!endif</font></div>
<div><font color="#1F497D">        #Check if domains match</font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D">        if($fd != $rd) </font></div>
<div><font color="#1F497D">                xdbg("From domain $fd does not match request uri domain $rd\n");</font></div>
<div><font color="#1F497D">                send_reply("488", "Not Accetable Here");</font></div>
<div><font color="#1F497D">                exit;</font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D">        #$rd = $td</font></div>
<div><font color="#1F497D">        $avp(oexten) = $rU;</font></div>
<div><font color="#1F497D">        if (!lookup("location")) </font></div>
<div><font color="#1F497D">                $var(rc) = $rc;</font></div>
<div><font color="#1F497D">                t_newtran();</font></div>
<div><font color="#1F497D">                switch ($var(rc)) </font></div>
<div><font color="#1F497D">                        case -1:</font></div>
<div><font color="#1F497D">                        case -3:</font></div>
<div><font color="#1F497D">                                xlog("L_ALERT","ALERT: User not found\n");</font></div>
<div><font color="#1F497D">                                if (isflagset(FLT_ASTERISK_TRY)) </font></div>
<div><font color="#1F497D">                                        # Try calling with PUSH KIT</font></div>
<div><font color="#1F497D">                                        send_reply("404", "Not Found");</font></div>
<div><font color="#1F497D">                                 else </font></div>
<div><font color="#1F497D">                                        # User not found, check if is an app based on uri prefix, then call it with pushkit</font></div>
<div><font color="#1F497D">                                        if($(rUs.substr,0,6)=="007001") </font></div>
<div><font color="#1F497D">                                                xlog("L_ALERT","ALERT: Trying calling $ru with PUSUH KIT\n");</font></div>
<div><font color="#1F497D">                                                # device token check missing</font></div>
<div><font color="#1F497D">                                                route(SUSPEND);</font></div>
<div><font color="#1F497D">                                                route(SENDPUSH);</font></div>
<div><font color="#1F497D">                                         else </font></div>
<div><font color="#1F497D">                                                setflag(FLT_ASTERISK_TRY);</font></div>
<div><font color="#1F497D">                                                route(ASTERISK);</font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D"> </font></div>
<div style="text-indent:35.4pt;padding-left:35.4pt;"><font color="#1F497D">exit;</font></div>
<div><font color="#1F497D">                        case -2:</font></div>
<div><font color="#1F497D">                                send_reply("405", "Method Not Allowed");</font></div>
<div><font color="#1F497D">                                exit;</font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D">        # when routing via usrloc, log the missed calls also</font></div>
<div><font color="#1F497D">        if (is_method("INVITE"))</font></div>
<div><font color="#1F497D">                setflag(FLT_ACCMISSED);</font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D">        route(RELAY);</font></div>
<div><font color="#1F497D">        route(STORETRAN);</font></div>
<div><font color="#1F497D">        exit;</font></div>
<div><font color="#1F497D"> </font></div>
<div><font face="Times New Roman" size="3" color="#1F497D"><span style="font-size:12pt;"> </span></font></div>
<div><font color="#1F497D">route[STORETRAN] </font></div>
<div><font color="#1F497D">        ts_store();</font></div>
<div><font color="#1F497D">        $sht(vtp=>stored::$rU) = 1;</font></div>
<div><font color="#1F497D">        xlog("L_ALERT", "stored transaction [$T(id_index):$T(id_label)] $fU => $rU\n");</font></div>
<div><font face="Times New Roman" size="3" color="#1F497D"><span style="font-size:12pt;"> </span></font></div>
<div><font face="Times New Roman" size="3" color="#1F497D"><span style="font-size:12pt;"> </span></font></div>
<div><font face="Times New Roman" size="3" color="#1F497D"><span style="font-size:12pt;"> </span></font></div>
<div><font color="#1F497D">Thanks to both, </font></div>
<div><font color="#1F497D">Regards,</font></div>
<div><font color="#1F497D">T.</font></div>
<div><font face="Times New Roman" size="3" color="#1F497D"><span style="font-size:12pt;"> </span></font></div>
<div><b>Da:</b> sr-users [<a href="mailto:sr-users-bounces@lists.sip-router.org">mailto:sr-users-bounces@lists.sip-router.org</a>] <b>Per conto di </b>Federico Cabiddu<br>

<b>Inviato:</b> domenica 22 gennaio 2017 16:24<br>

<b>A:</b> Kamailio (SER) - Users Mailing List <sr-users@lists.sip-router.org><br>

<b>Oggetto:</b> Re: [SR-Users] serial forking calls using TSILO</div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">Hi,</span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">could you please provide the LOCATION route and the Kamailio's log at level 3?</span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">Thank you.</span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">Regards,</span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">Federico</span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">On Fri, Jan 20, 2017 at 11:05 AM, Tomas Zanet <<a href="mailto:tzanet@came.com"><font color="blue"><u>tzanet@came.com</u></font></a>> wrote:</span></font></div>
<div>Hello, </div>
<div>I’m using Kamailio 4.4.4 with TSILO module in order to support Push Notifications used by our voip app on Apple ios10.</div>
<div>So far, everything works fine:  Kamailio can get an incoming call, suspend it, then send push notification with an external script, receive a new app registration and then call it after resuming the invite.</div>
<div>To do so, thanks to Mr, Cabiddu, I used all the functions described here</div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"><a href="http://www.kamailio.org/events/2015-KamailioWorld/Day2/20-Federico.Cabiddu-Kamailio-In-A-Mobile-World.pdf"><font face="Calibri" size="2" color="blue"><span style="font-size:11pt;"><u>http://www.kamailio.org/events/2015-KamailioWorld/Day2/20-Federico.Cabiddu-Kamailio-In-A-Mobile-World.pdf</u></span></font></a></span></font></div>
<div> </div>
<div> </div>
<div>Right now, I would like to support serial forking calls using push notification because it was already supported with legacy voip.</div>
<div>To do so, I used failure_route function where, after getting the call destinations and setting them into an avp, I set the new SIP request uri $ru.</div>
<div>Here is my failure_route:</div>
<div>failure_route[MANAGE_FAILURE] </div>
<div>        route(NATMANAGE);</div>
<div>        if (t_is_canceled()) </div>
<div>                exit;</div>
<div> </div>
<div> </div>
<div>#!ifdef WITH_BLOCK3XX</div>
<div>        # block call redirect based on 3xx replies.</div>
<div>        if (t_check_status("3[0-9][0-9]")) </div>
<div>                t_reply("404","Not found");</div>
<div>                exit;</div>
<div> </div>
<div>#!endif</div>
<div> </div>
<div>       if (is_avp_set("$avp(group_members_db)")) </div>
<div>                $ru ="sip:"+$avp(group_members_db)+"@"+$fd;</div>
<div>                $avp(group_members_db) = $null;</div>
<div>                route(LOCATION);</div>
<div>                exit;</div>
<div> </div>
<div> </div>
<div> </div>
<div>I am troubleshooting this scenario and this is what I see:</div>
<div>1) Kamailio receives incoming call</div>
<div>2) Suspend it</div>
<div>3) Send Push notification to account1</div>
<div>4) Kamailio receives account1 registration -> INVRESUME route is now called</div>
<div>5) Then call account1</div>
<div>6) Nobody answers the call</div>
<div>7) failure_route[MANAGE_FAILURE] is now called -> set $ru with next sipaccount: account2</div>
<div>8) suspend invite</div>
<div>9) send push notification to account2</div>
<div>10) account2 sends its sip registration -> INVRESUME route is now called</div>
<div>11) Kamailio calls account1 instead of account2 -> this is my issue</div>
<div> </div>
<div>On step 10: despite account2 is registered, I checked it using “kamctl ul show”, the second call is forwarded all'account1 and not to account2.</div>
<div>I also checked the TSILO logs and everything seems ok. Here is the logs:</div>
<div>First call:</div>
<div>      suspended transaction [53945:1648394094] asterisk => account1</div>
<div>      htable key value [53945:1648394094]</div>
<div>      resuming trasaction [53945:1648394094] account1 53945:1648394094)</div>
<div>second call:</div>
<div>      suspended transaction [53945:1648394094] asterisk => account2</div>
<div>      htable key value [53945:1648394094]</div>
<div>      resuming trasaction [53945:1648394094] account2 53945:1648394094)</div>
<div> </div>
<div>In order to find out the issue I put some xlogs, printing $ru value: what I see is the $ru value is set correctly on failure_route but as soon as the t_continue is called, the ru overwritten back to account1</div>
<div> </div>
<div>Can anyone address me to find out the solution? </div>
<div>Thanks in advance</div>
<div> </div>
<div>T.</div>
<div><font color="#888888"> </font></div>
<div><font color="#888888"> </font></div>
<div><font face="Times New Roman" size="3" color="#888888"><span style="font-size:12pt;"><br>

<font face="Arial" size="2"><span style="font-size:10pt;"><b>Tomas Zanet<br>

</b></span></font><font face="Arial" size="2"><span style="font-size:10pt;">Software Design Department<br>

</span></font><a href="mailto:tzanet@came.com"><font face="Arial" size="2" color="blue"><span style="font-size:10pt;"><u>tzanet@came.com</u></span></font></a></span></font></div>
<div><font face="Times New Roman" size="3" color="#888888"><span style="font-size:12pt;"> </span></font></div>
<div><font color="#888888"> </font></div>
<div style="margin-bottom:12pt;"><font face="Times New Roman" size="3"><span style="font-size:12pt;"><br>

_______________________________________________<br>

SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list<br>

<a href="mailto:sr-users@lists.sip-router.org"><font color="blue"><u>sr-users@lists.sip-router.org</u></font></a><br>

<a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users"><font color="blue"><u>http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</u></font></a></span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
<div style="margin-top:6.7pt;margin-bottom:6.7pt;"><font face="Times New Roman" size="3"><span style="font-size:12pt;"><br>

<font face="Arial" size="2"><span style="font-size:10pt;"><b>Tomas Zanet<br>

</b></span></font><font face="Arial" size="2"><span style="font-size:10pt;">Software Design Department<br>

tzanet@came.com<br>

</span></font></span></font></div>
<div style="margin-top:6.7pt;margin-bottom:6.7pt;"><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
</span></font>
</body>
</html>