Hello,
the ACK for non-2xx replies is hop-by-hop, meaning that kamailio will
generate one when the reply is received, will send back the reply and
when the ack comes from upstream, it will absorb it.
In this case it seems that ack is not matching any invite transaction
and thus is not known where to send it.
Can you send the invite, reply and the ack requests taken with ngrep for
such case? Maybe is something broken in the content of the message.
Cheers,
Daniel
On 5/18/11 11:23 PM, Carl Wagner wrote:
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)
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
--
Daniel-Constantin Mierla
http://www.asipto.com