[OpenSIPS-Users] call forwarding with replace from uri

Stefano Pisani stefano.pisani at omnianet.it
Wed Feb 2 16:54:53 CET 2011


Hi Jesse,
in your script you are replacing from header twice.
Double check to your script and delete the second uac_replace_from.
This function can be used just once a phone call.

ciao
s

Il 02/02/2011 16:41, Jesse Cloutier ha scritto:
> Thanks for the answer, I was not very clear in my first email though, 
> sorry for that. Basically when caller A initiates a call, his $fu may 
> be pulled from the db and replaced with a uac_replace_from. Then if 
> the call progresses and is redirected to a new destination the call 
> fails to authenticate because the new FROM URI is not in the DB. I 
> have tried to restore his original FROM URI using uac_restore_from, 
> but this doesnt seem to do it and if I store the original uri and call 
> uac_replace_from a second time I get something like 
> "sip:111 at 1.1.1.1sip:222 at 1.1.1.1"
>
> Multumesc!
>
> On Wed 02 Feb 2011 07:28:28 AM EST, Bogdan-Andrei Iancu wrote:
>> Hi Jesse,
>>
>> Lost me a bit between those pieces of script.
>>
>> Anyhow, as far I understood from your problem, you want to change the 
>> FROM URI in order to use the new value later in the script (in the 
>> auth part). Well, this does not work - in opensips, the changes you 
>> do over the message are not visible until the message is sent out. So 
>> you cannot use your own changes later in script.
>>
>> To avoid this issue, you can use a variable to store the "correct" 
>> value of the FROM URI ($fu directly or the value from DB) - later in 
>> script, use for auth (or other purposes) this variable in order to 
>> deal with the FROM URI value (the right one).
>>
>> Regards,
>> Bogdan
>>
>> Jesse Cloutier wrote:
>>> Hi list,
>>>
>>> I having trouble with my script when trying to call forward by 
>>> reseting the $ru and doing a route(1)
>>>
>>> My problem seems to be coming from the fact that I am changing my 
>>> $fu with uac_replace_from. When I xlog the $fu right before the 
>>> route() It shows the correct value (the original $fu before it was 
>>> changed by uac_replace_from). But on the request to the forwarded 
>>> number it tries to authenticate the user using the new value (the 
>>> value that uac_replace_from put in)
>>>
>>> If I don't replace the $fu everything works fine.
>>>
>>> Thanks A lot for any help!!
>>>
>>> here is the relavant parts of my script:
>>>
>>> Replacing the uri in the original request:
>>>
>>> if (is_avp_set("$avp(s:uri)")) {
>>> if (is_avp_set("$avp(s:fromname)")) {
>>> xlog("L_INFO","Fromname set to $avp(s:fromname) and URI set to 
>>> $avp(s:uri)");
>>> uac_replace_from("$avp(s:fromname)","$avp(s:uri)");
>>> } else {
>>> uac_replace_from("","$avp(s:uri)");
>>> xlog("L_INFO","Only Fromname Set");
>>> }
>>> }
>>>
>>>
>>> The fowrwarding:
>>>
>>> if(avp_db_load("$ru","$avp(s:unavailcallfwd)")) {
>>> #xlog("call forward is set to: $avp(s:unavailcallfwd)");
>>> avp_pushto("$ru","$avp(s:unavailcallfwd)");
>>> xlog("call forward is set to: $ru from $fu");
>>>
>>> route(1);
>>>
>>> exit;
>>> }
>>>
>>>
>>> And the proxy authorize
>>>
>>>
>>> xlog("Checking if we should attempt authentication on $fu");
>>> if (!(method=="REGISTER"))
>>> {
>>> #Do not authenticate calls from the gateways
>>> xlog("Checking if its from a gateway");
>>> if(!is_from_gw()) # This check is from the drouting module
>>> {
>>> xlog("Checking if it is an IP Authed IP");
>>> if(!check_source_address("0", "$avp(i:9)")) #This check looks in the 
>>> address table
>>> {
>>> xlog("Checking if it is a subscriber");
>>>
>>> xlog("from is $fu");
>>>
>>> if (!proxy_authorize("", "subscriber")) {
>>> proxy_challenge("", "0");
>>> xlog("Sent proxy challange to $fu");
>>> exit;
>>> }
>>> if (!db_check_from()) {
>>> sl_send_reply("403","Forbidden auth ID");
>>> exit;
>>> }
>>>
>>> }
>>> }
>>> }
>>>
>>>
>>> -- 
>>> Jesse Cloutier
>>> Network Administrator
>>> Cronomagic Canada
>>> 5143411579 x210
>>> jesse at cronomagic.com
>>> ------------------------------------------------------------------------ 
>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users




More information about the Users mailing list