Hello,
On 10/18/13 7:25 PM, Spencer Thomason wrote:
Hello,
In our network topology we use Kamailio at the edge of our network proxying requests from
a core set of FreeSWITCH servers.
I have a new termination provider where a session timer ReINVITE fails because the ACK is
sent to the contact address of the FreeSWITCH server, not the proxy. Can I Record-Route
these in dialog requests? If so, where should I do it in the config?
A quick google search returned this thread:
https://lists.cs.columbia.edu/pipermail/sip-implementors/2003-June/005089.h…
which confused me a little.
yes, you can re-enforce record route for requests
within dialog,
although not required by specs. See below the position.
My in dialog config block looks like this:
# Handle requests within SIP dialogs
route[WITHINDLG] {
if (has_totag()) {
# sequential request withing a dialog should
# take the path determined by record-routing
if (loose_route()) {
Add it after the above line, like:
record_route();
if (is_method("BYE")) {
setflag(FLT_ACC); # do accounting ...
setflag(FLT_ACCFAILED); # ... even if the transaction fails
setflag(FLT_SIPTRACE);
}
if (is_method("ACK")) {
# ACK is forwarded statelessy
route(NATMANAGE);
}
route(RELAY);
} else {
if ( is_method("ACK") ) {
if (t_check_trans()) {
# no loose-route, but stateful ACK;
# must be an ACK after a 487
# or e.g. 404 from upstream server
t_relay();
exit;
} else {
# ACK without matching transaction ... ignore and discard
exit;
}
}
sl_send_reply("404","Not here");
}
exit;
}
}
Cheers,
Daniel
--
Daniel-Constantin Mierla -
http://www.asipto.com
http://twitter.com/#!/miconda -
http://www.linkedin.com/in/miconda
Kamailio Advanced Trainings - Berlin, Nov 25-28; Miami, Nov 18-20, 2013
- more details about Kamailio trainings at
http://www.asipto.com -