Hi,
I have Kamailio set up to act as a proxy and load balancer. Most things
are working correctly but for some reason I can't get Kamailio to proxy
an ACK to a 486 Busy.
I assume that it is something wrong that I have done in the kamailio.cfg
file but I am not seeing it.
Does the t_check_trans() return false because the call state is Busy?
Please let me know if you need other logs or information.
Thanks in advance,
Carl
================== Call flow: (from ngrep) ======================
Asterisk Kamailio Provider
INVITE--------->
INVITE--------->
<----------100 Trying
<---------100 Trying
<----------486 Busy
<---------486 Busy
ACK------------->
====== Kamailio does not proxy the ACK here =======
<----------486 Busy
<---------486 Busy
ACK------------->
<----------486 Busy
<---------486 Busy
=== kamailio.cfg snippet
...
route
{
route(REQINIT); # remove malformed messages
# handle requests within SIP dialogs
route(WITHINDLG);
...
}
###################################################################
# Handle requests within SIP dialogs (request has a TO: Tag)
route[WITHINDLG]
{
if (has_totag())
{
xlog("L_INFO", " WITHINDLG: SIP Request: [$rm] ruri=[$ru] (from [$fu]
to [$tu], Call-ID=[$ci], CSeq=[$cs])\n");
if (loose_route())
{
...
}
else # not loose_route
{
if ( is_method("ACK") )
{
if ( t_check_trans() ) # see if a message is related to a
transaction
{
...
}
else
{
# ACK without matching transaction ... ignore and discard
xlog("L_INFO", " WITHINDLG: has TO: tag AND loose_route is NOT true and
is_method = ACK and t_check_trans=FALSE\n");
# not forwarded here!!! Tried both t_relay and forward.
# $var(a) = t_relay();
$var(a) = forward();
xlog ("L_INFO", " WITHINDLG: (ReturnCode = [$var(a)]
exiting)\n");
exit;
}
}
sl_send_reply("404","Not here");
}
exit;
}
}
============= End of kamailio.cfg ================
============= /var/log/messages - snippit of the message ==========
May 18 11:21:05 kam0 /usr/sbin/kamailio[21282]: INFO: <script>: ========
processing new message
May 18 11:21:05 kam0 /usr/sbin/kamailio[21282]: INFO: <script>: MAIN:
SIP Request: [ACK] ruri=[sip:+13031112222@2.3.4.5] (from
[sip:+13031112222@3.4.5.6] to [sip:+13031112222@2.3.4.5],
Call-ID=[21a30b9168e0a8c963d47ca1361cef77(a)3.4.5.6]) CSeq=[102]
May 18 11:21:05 kam0 /usr/sbin/kamailio[21282]: INFO: <script>:
WITHINDLG: SIP Request: [ACK] ruri=[sip:+13031112222@2.3.4.5] (from
[sip:+13031112222@3.4.5.6] to [sip:+13031112222@2.3.4.5],
Call-ID=[21a30b9168e0a8c963d47ca1361cef77(a)3.4.5.6], CSeq=[102])
May 18 11:21:05 kam0 /usr/sbin/kamailio[21282]: INFO: <script>:
WITHINDLG: has TO: tag
May 18 11:21:05 kam0 /usr/sbin/kamailio[21282]: INFO: <script>:
WITHINDLG: has TO: tag AND loose_route is NOT true and is_method = ACK
and t_check_trans=FALSE
May 18 11:21:05 kam0 /usr/sbin/kamailio[21282]: INFO: <script>:
WITHINDLG: the ACK to a 486 was not being processed so I am adding
t_relay here
May 18 11:21:05 kam0 /usr/sbin/kamailio[21282]: INFO: <script>:
WITHINDLG: (ReturnCode = [1] exiting)