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@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@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)