Hi Anton,

by default, the module does auto restore of the FROM/TO hdr. The restoring is done in the traffic flowing in the opposite direction than the initial request. So, the uac_restore_xx() is NOT an uac_undo_xx() !

As I understand, you do serial forking and for you want to do different, or not to do, uac_replaces for each branch. If this is the case, you need to do the uac_replace_xx() in the branch_route - by doing this, the change will impact only that branch, without any effect on the other branches.


branch_route[change_from]
{
    if ($avp(furi)!=NULL)
        uac_replace_from("$avp(furi)");
}

route {
    $avp(furi) = "...";
    t_on_branch("change_from");
t_on_failure("missed_call");
}


failure_route[missed_call]
{
    $ru = "..";

    $avp(furi) = "..."; # if you want a different FROM URI
$avp(furi) = NULL; # if you want to keep the original URI

    ....
}

Regards,

Bogdan-Andrei Iancu

OpenSIPS Founder and Developer
  https://www.opensips-solutions.com
OpenSIPS Summit, Amsterdam, May 2020
  https://www.opensips.org/events/Summit-2020Amsterdam/
OpenSIPS Bootcamp, Miami, March 2020
  https://opensips.org/training/OpenSIPS_Bootcamp_2020/

On 2/4/20 3:39 PM, Антон Ершов wrote:
Hello friends
Help me to understand. In request_route i make replace from and to fields. After an unsuccessful attempt to invite, I try to direct the call to another place and again I need to replace the from and to fields. But instead of replacing, new values are simply added

route {
    ...
    route(rewrite_header);
    ...
}
failure_route[missed_call] {
    setflag(need_uac_restore);
    ...
    route(rewrite_header);
}
route[rewrite_header] {
    if (isflagset(need_uac_restore)) {
        xlog("L_INFO", "[ $ci ] - restore from and to fields\n");
        uac_restore_from();
        uac_restore_to();
    }
   uac_replace_from("","sip:$avp(fromuser)@$avp(fromdomain)");
     uac_replace_to("","sip:$avp(touser)@$avp(todomain)");
}

in the end I get such fields

From:  <sip:2220222@10.10.10.10 <mailto:sip%3A2220222@10.10.10.10>><sip:5274...@sipofon.loc>;tag=fe654d87-7565-408f-9925-98a5bac99e1c To: <sip:3865071@10.10.10.10 <mailto:sip%3A3865071@10.10.10.10>><sip:3865...@sipofon.loc>

it simply appends the new value to the old and does not replace it
changing replace modes in uac module does not change behavior
in debug log i see this

DBG:uac:replace_uri: uri to replace [<sip:2220222@10.23.100.40 <mailto:sip%3A2220222@10.23.100.40>>], replacement is [<sip:79385274...@multifon.ru <mailto:sip%3a79385274...@multifon.ru>>]
DBG:dialog:new_dlg_val: inserting <739823>=<<sip:5274...@sipofon.loc>>
DBG:dialog:store_dlg_value_unsafe: var found-> <<sip:2220222@10.10.10.10 <mailto:sip%3A2220222@10.10.10.10>>>! DBG:uac:replace_uri: uri to replace [<sip:3865071@10.100.100.100 <mailto:sip%3A3865071@10.100.100.100>>], replacement is [<sip:3865...@sipofon.loc>]
DBG:dialog:new_dlg_val: inserting <739824>=<<sip:3865...@sipofon.loc>>
DBG:dialog:store_dlg_value_unsafe: var found-> <<sip:3865071@10.10.10.10 <mailto:sip%3A3865071@10.10.10.10>>>!

10.23.100.40 - call initiator
10.10.10.10 - where should the call go first
10.100.100.100 - opensips
sipofon.loc - where should the call go after failure_route has worked






_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to