[OpenSIPS-Users] Problem with double field P-Asserted-Identity
mmarzuola at interfree.it
mmarzuola at interfree.it
Tue Apr 7 16:17:40 CEST 2009
Hi Bogdan
I tried to follow your directions, but the problem persists.
This is what I did:
In the route where the function do_routing is called I inserted:
########################################################################
# Request route 'invite-to-external'
########################################################################
route[6] {
if(isflagset(20)) {
xlog("L_INFO", "Call to foreign domain - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
route(2);
exit;
}
if(!isflagset(23)) {
# don't allow calls relaying from PSTN to PSTN, if not explicitely forwarded
if(uri=~ "^sip:[0-9]+@") {
xlog("L_INFO", "Call to PSTN\n");
do_routing();
xlog("L_INFO", "first attempt is $ru, attributes are $avp(s:drattrs)\n");
if(!goes_to_gw()) {
xlog("L_ERR", "No PSTN gateways available - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
sl_send_reply("503", "PSTN Termination Currently Unavailable");
exit;
}
setflag(21);
t_on_branch("1");
t_on_failure("2");
route(2);
exit;
}
}
xlog("L_INFO", "Call to unknown user - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
sl_send_reply("404", "User Not Found");
exit;
}
In the branch_route:
branch_route[1] {
if(is_present_hf("P-Asserted-Identity")) {
xlog("L_INFO", "Removing P-Asserted-Identity in branches\n");
remove_hf("P-Asserted-Identity");
}
if(is_present_hf("Remote-Party-ID")) {
remove_hf("Remote-Party-ID");
}
if(is_avp_set("$avp(s:caller_cli)/s")) {
xlog("L_INFO", "Set caller CLI '$avp(s:caller_cli)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
append_hf("P-Asserted-Identity: <$avp(s:caller_cli)>\r\n");
}
route(14);
}
########################################################################
# Request route 'clir'
########################################################################
route[14] {
if(isflagset(28) && !isflagset(27)) {
setflag(27);
xlog("L_INFO", "Anonymize caller - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
uac_replace_from("Anonymous","sip:anonymous at anonymous.invalid");
if(is_present_hf("Privacy")) {
remove_hf("Privacy");
}
append_hf("Privacy: id\r\n");
}
}
########################################################################
# Request route 'base-outbound'
########################################################################
route[2] {
xlog("L_INFO","ARRIVATO NELLA ROUTE 2\n");
t_on_reply("1");
if(!isflagset(21)) {
t_on_failure("1");
}
if(is_present_hf("Proxy-Authorization")) {
consume_credentials();
}
xlog("L_INFO", "Request leaving server, D-URI='$du' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
if(!t_relay()) {
sl_reply_error();
}
exit;
}
In the failure_route;
########################################################################
# Failure route 'pstn-failover'
########################################################################
failure_route[2] {
xlog("L_INFO", "Failure route for PSTN entered - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
route(9);
if(!use_next_gw()) {
xlog("L_ERR", "Failed to select next PSTN gateway - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
exit;
}
xlog("L_INFO", "selected next gateway $ru, attributes are $avp(s:drattrs)\n");
if(is_present_hf("P-Asserted-Identity")) {
xlog("L_INFO", "Removing P-Asserted-Identity in failure route\n");
remove_hf("P-Asserted-Identity");
}
if(is_present_hf("Remote-Party-ID")) {
remove_hf("Remote-Party-ID");
}
if(is_avp_set("$avp(s:caller_cli)/s")) {
xlog("L_INFO", "Set caller CLI '$avp(s:caller_cli)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
append_hf("P-Asserted-Identity: <$avp(s:caller_cli)>\r\n");
#append_hf("Remote-Party-ID: <$avp(s:caller_cli)>;party=caller;privacy=none;screen=yes\r\n");
}
route(14);
t_on_failure("2");
route(2);
}
In the INVITE sent from proxy to the second gateway are still two P-Asserted Idntity fields.
Where am I wrong?
Thanks in advance.
Matteo Marzuola
>Hi Matteo,
>Whatever change you in request_route will propagate in all branches -
>this is your problem - when you set the PAI for the first destination,
>in request_route, the PAI will be present in all future branches.
>To avoid this situation, avoid adding "per-branch" info from
>request_branch - do it from branch_route; branch_route and failure_route
>allows changes per branch (and not global ones).
>Do something like:
>request_route -> do_routing + arm branch_route
>branch_route -> set PAI for the first branch
>failure_route -> set PAI for the next branch
>Regards,
>Bogdan
>Hi all. In my scenario I try to use dynamic routing and I have a problem with the P-Asserted Identity field. When >the proxy tries to send the INVITE to the first gateway selected from DRouting module by the function
>do_routing, there is only one PAI field, but if that gateway is down, at the second attempt to next gateway, the >INVITE contains two PAI fields identicals.
>Thanks in advance.
>Matteo Marzuola
----------------------------------------------------------------------------
Vuoi essere presente online?
Vuoi dare voce alla tua attivita`?
Acquista un dominio su domini.interfree.it.
A partire da 18,59 euro
----------------------------------------------------------------------------
More information about the Users
mailing list