I am having a problem with incoming calls where ACK messages dont seem to
be getting (loose) routed.
Here is the relevant part of my config
======================
route {
xlog("L_ERR", "time [%Tf] method <%rm> r-uri <%ru> -
%tu\n");
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops -- probebly a loop or
something");
break;
};
if ( msg:len > max_len ) {
sl_send_reply("513", "Message too big");
break;
};
# we record-route all messages -- to make sure that
# subsequent messages will go through our proxy for accounting
purposes
record_route();
#Accounting if a call is started or ended
if (method=="INVITE" || method=="BYE" ||
method=="CANCEL") {
acc_rad_request("200");
}
# grant Route routing if route headers present
# loose-route processing. Decreases security slightly regarding
# forged messages, but decreases load.
if (loose_route()) {
xlog("L_NOTICE", "Loose Routing\n");
t_relay();
break;
};
======================
My understand is this should cause the ACK messages that are part of the
transaction to get routed. They should not pass beyond this block of code
right?
However, the SIP conversation goes as follows.
Gateway invites proxy
Proxy says 100 trying
Proxy says 100 trying
Proxy invites user
User says 100 trying
User says 180 Ringing
User says 180 Ringing
Thus far all is well
When the user picks up the phone
User tells proxy 200 ok
Proxy tells gateway 200 ok
Gateway tells proxy ACK
At this point the proxy should be relaying the ACK to the user, but it does
not. Instead due to timeout the user sends another 200 ok and that last
block of conversation repeats.
Any ideas why this would not be working?
(I tried to send this with a full SIP dialog but it got rejected as being
too big so this email is the chopped down version)