Hello,
I have a problem trying to remove a header using remove_hf() after an
append_branch(). I am using 1.2 version of OpenSer. The scenario with
the problem is as described in the folowing lines.
When I receive an INVITE I try a parallel fork (one leg towards PSTN,
the other towards IP), at which time I append a "Redirection" header.
The PSTN leg will be answered with a 486 response, due to the presence
of the "Redirection" header. When the IP leg expires, I receive a 408
response, at which time I do a serial fork, and resend the message
towards the PSTN destination, this time without the "Redirection"
header.
The problem is that I cannot seem to be able to remove (or find) the
header. I tried everywhere (before appending the new branch, after, in
branch_route, before relaying), as you will see below.
I tried searching the mailing lists but nothing turned up. I would
greatly appreciate any help, for I am running out of ideas.
Here is a simplified version of my configuration script, containing
only the significant bits of the routing blocks:
#---------------------------------------------------
# main routing logic
#---------------------------------------------------
route {
# check maxfwd and message lenght
# do loose routing
if (method=="INVITE") {
# rewrite ruri
rewriteuri(<PSTN destination>);
# signal forking
append_hf("Redirection: count=5\r\n");
append_branch();
revert_uri();
t_on_failure("1");
if (!t_relay()){
xlog("acc_info", " ERROR");
sl_reply_error();
}
} else if (method=="ACK" || method=="BYE" ||
method=="CANCEL") {
# default message handler
} else {
# forbidden message handler
}
}
#---------------------------------------------------
# Failure route relay
#---------------------------------------------------
route[1] {
xlog("acc_info", " Failure route relay");
# try removing it before t_relay
if(is_present_hf("Redirection")){
xlog("acc_info", " Remove before t_relay");
remove_hf("Redirection");
}
if (!t_relay()){
xlog("acc_info", " ERROR");
sl_reply_error();
}
}
#---------------------------------------------------
# Failure route handling
#---------------------------------------------------
failure_route[1] {
xlog("acc_info", " failure route handler");
if(t_check_status("408")) {
t_on_branch("1");
rewriteuri(<PSTN destination>);
# try removing it before append branch
if(is_present_hf("Redirection")){
xlog("acc_info", " Remove before append
branch");
remove_hf("Redirection");
}
append_branch();
# try removing it after append branch
if(is_present_hf("Redirection")){
xlog("acc_info", " Remove after append
branch");
remove_hf("Redirection");
}
route(1);
}
}
Show replies by date
Madalina Pitis writes:
The problem is that I cannot seem to be able to remove
(or find) the
header. I tried everywhere (before appending the new branch, after, in
branch_route, before relaying), as you will see below.
try to add redirect header in branch route block.
-- juha
Thank you for the suggestion, I tried that and it worked. I then
needed to use some flags to know when to add the header, but
everything worked out just fine.
On 9/10/07, Juha Heinanen <jh(a)tutpro.com> wrote:
Madalina Pitis writes:
The problem is that I cannot seem to be able to
remove (or find) the
header. I tried everywhere (before appending the new branch, after, in
branch_route, before relaying), as you will see below.
try to add redirect header in branch route block.
-- juha