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)