[OpenSIPS-Users] Problem with double field P-Asserted-Identity
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Tue Apr 7 17:48:53 CEST 2009
Hi Matteo,
yes because arming the branch_route will be on for all branches of the
transaction - so the branch_route() will be triggered even for the
branch you create in the failure_route -> one PAI in failure route and
one in branch route.
So, you can remove the PAI manipulation from the failure_route() and let
only branch_route to do the job.
Regards,
Bogdan
mmarzuola at interfree.it wrote:
> 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
> ----------------------------------------------------------------------------
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
More information about the Users
mailing list