Thanks for your response. What I found is: 1. If call is from phone registered to IP (external or internal) - then I do not need any of my modifications - ACK goes through loose_route, or t_check_trans() is OK and ACK is also OK. 2. If call is from phone registered to name (sip.mycompany.com) - then t_check_trans is not OK, and I have problems. I understand - it is dirty patch. May be best is if I could somehow replace from domain name with IP. At the end - I my dirty solution:
if ( is_method("ACK|BYE") ) { if ( t_check_trans() ) { t_relay(); exit; } else { route(ACKBYE); t_relay(); # ACK without matching transaction ... ignore and discard exit; } } sl_send_reply("404","Uau Not here"); route[ACKBYE] { #!ifdef WITH_MYFORWARD xlog("ACKBYE called -$rm-$td-$si"); if(($sht(forw=>$ft))=~"MessageCPIM"){ # Direct messages between clients return; } if(($td=="sip.mycompany.com")||($si=="MyIP")){ $du=$sht(forw=>$ft); xlog("$du-$rm-$td"); return; } #!endif return; } On Mon, Jan 30, 2012 at 11:12 AM, Anca Vamanu <anca.vam...@1and1.ro> wrote: > ** > Hi Mihaylov, > > If your Asterisk servers add a Record-Route header to the initial Invite, > for in-dialog requests ( ACK, BYE) you should use *loose_route() *function > to do the routing. This will make sure the requests go the same path as the > initial Invite. It is not a good practice to manually route these requests. > > Regards, > Anca > > > On 01/29/2012 11:10 PM, Stoyan Mihaylov wrote: > > My whole configuration is: > [Sip clients] < = > Kamailio 3.2 <=> Asterisk servers (behind Kamailio) > Asterisk servers have only local IP addresses, and I use t_relay instead > of forward. > Kamailio runs on same server as rtpproxy. > Everything is fine if clients connect to Kamailio with its IP address - > global, or if they are behind Kamailio with local address. > When clients connect to Kamailio using sip.ourcompany.com, then call > (video also) is OK, but ACK and BYE do not work. > BYE receives not here (404), and ACK die somewhere. > I forward BYE and ACK in case when src_ip==$td to Asterisk server. > > If one of clients use IP - then calls initiated from it are OK (BYE/ACK > - are going correctly - to Asterisk and to other client also). But calls > from other client have problems with BYE and ACK. > > To use sip.ourcompany.com - I put: > alias=sip.ourcompany.com > > > route[ACKBYE] { > #!ifdef WITH_PSTN > if (is_method("BYE|ACK")) > { > xlog("L_ALERT","AB $rm $sht(forw=>$ft) $td"); > if(src_ip==$td){ > #I have to rewrite du - messages loop in Kamailio, I store > in $sht(forw=>$ft) $du which I use during INVITE. > $du=$sht(forw=>$ft); > route(RELAY); > exit; > } > xlog("L_ALERT","ACK,Bye Not me"); > } > #!endif > return; > } > > > > _______________________________________________ > 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 > >
_______________________________________________ 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