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
<http://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 <http://sip.ourcompany.com> - I put:
alias=sip.ourcompany.com <http://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;
}