Hi folks,
I have a problem with a scenario where an incoming INVITE is forwarded to a redirect
server
which responds with 302 and a new target in the Contact header (B). The call is being
forwarded
to the new contact correctly. All responses from B that are either provisional or a 200
OK
are being routed back to the caller. If B responds with any code >=400 the 302 from the
redirect server is being returned to the caller instead of the received code.
A B C
|--INVITE->| |
| |--INVITE->|
| |<---302---| D
| |----INVITE--->|
| |<-----404-----|
|<---302---|
Is this intended? And if so, is there any way to change this behaviour so the latest
received
response is returned?
I tested using the version from repository from 13.01.2011
My reduced config looks like this:
route{
if (@to.tag != "") {
if (loose_route()) {
record_route();
t_relay();
} else {
if ( is_method("ACK") ) {
if ( t_check_trans() ) {
t_relay();
exit;
} else {
# ACK without matching transaction ... ignore and
discard.\n");
exit;
}
}
record_route();
}
exit;
} else {
record_route();
}
t_on_failure("REDIRECT_REPLY");
if (!t_relay_to_udp("192.168.0.10","5060")) {
sl_reply_error();
};
exit;
}
failure_route[REDIRECT_REPLY] {
if (t_check_status("3[0-9][0-9]")) {
get_redirects("*:1");
t_relay();
exit;
}
}
Regards,
Stefan