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.vamanu@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:


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