[SR-Users] [Kamailio-Users] Rewrite $tU

Klaus Darilion klaus.mailinglists at pernau.at
Fri Feb 11 19:45:39 CET 2011



Am 11.02.2011 14:51, schrieb Spinov Evgeniy:
>> Hello,
> 
>> with the latest version there are alternatives you can use:
> 
>>> On 12/10/09 5:06 PM, David wrote:
>>> Hey,
>>>
>>> I won't pretend to be an expert in Kamailio, someone will probably 
>>> suggest a better way. But here is how I rewrote my SIP packet's TO 
>>> header before relaying it to the next hop :
>>>
>>> # Rewrite RURI
>>> avp_printf("$rU", "prefix_$rU");
> 
>> $rU = "prefix_" + $rU;
> 
>>>
>>> # Remove existing header
>>> remove_hf("To") ;
>>>
>>> # Add new header which is copied from RURI
>>> insert_hf("To: $ru\r\n", "From");
> 
>> you can do in one step, so you avoid operations on r-uri:
> 
>> insert_hf("To: sip:prefix_$rU@$rd\r\n", "From");
> 
>>>
>>>
>>> DISCLAIMER : Several threads have said that changing the TO header
> is 
>>> a bad idea, so I only recommend using this as a last resort.
> 
>> If devices are RFC3261 (SIP 2.0), then it is ok. If there are SIP 1.0 
>> devices, then you have to preserve To/From header.
> 
>> For the future, I would add options to change the From/To values via 
>> pseudo-variables. It is the admin to decide to use it or not -- now 
>> people need and do workarounds with subst or append_hf().
> 
>> Cheers,
>> Daniel
> 
> I use Kamailio 3.0.3, and tried to use both of methods, i.e. insert_ft()
> and reassigning pseudo variable $rU and all mentioned in this topic.
> However, handle_subscribe() and dlg_manage() somewhy uses unmodified
> packet.

Yes, most functions do not see message manipulation as the manipulations
are applied just before sending out the message again. So the changes
are applied after the functions.

Workaround 1: loop the message to Kamailio again

Workaround 2: Since Kamailio 3.1 you can use msg_apply_changes():
http://www.kamailio.org/docs/modules/3.1.x/modules/textopsx.html#msg_apply_changes

But note, this causes the message to be changed and reparsed, thus it
may be a performance killer (double processing time for message parsing)

klaus

> 
> Is there any workaround to handle $rU or $tU overwrites that for
> pua_dialoginfo module? 
> 
> I'm doing it like that:
> 
>         $var(orig_uri) = $rU;
>         $rU = $(fU{re.subst,/(.*)_(.*)/\1/}) + "_" + $rU;
>         if (is_method("INVITE")) {
> 		dlg_manage();
>         }                                                                                                                                                             
>         if (is_method("SUBSCRIBE")) {
> 		handle_subscribe();
>         }                                                                                                                                                    
>         $rU = $var(orig_uri);
> 
> However, according to debug messages, NOTIFY's which are coming just
> after INVITE are still without prefixes, but packets on Asterisk, which
> is after Kamailio, are coming modified.
> 
> Please, advice.
> 
>>
>> David
>>
>>
>>
>>
>>
>> David a écrit :
>>> Hey,
>>>
>>> I do understand that normally the TO header should not be written, my
>>> problem is that I am using the presence_dialoginfo module which uses
> the
>>> TO header and not the RURI, which means that in order to tell the
>>> difference between customer A's extension 101 and Customer B's
> extension
>>> 101, I rewrite the TO header to add context.
>>>
>>> This is actually the ame problem that I started discussing here :
>>> http://lists.kamailio.org/pipermail/users/2009-August/024316.html
>>>
>>> Trouble is I have not had time to work on this since then.
>>>
>>> Thanks,
>>>
>>> David
>>>
>>> Olle E. Johansson a écrit :
>>>> 10 dec 2009 kl. 15.04 skrev Iñaki Baz Castillo:
>>>>
>>>>
>>>>> El Jueves, 10 de Diciembre de 2009, David escribió:
>>>>>> Hey,
>>>>>>
>>>>>> I need to rewrite the $tU variable on a packet before it is 
>>>>>> relayed. It
>>>>>> is ok if the change is only on the relayed packet and the $tU 
>>>>>> variable
>>>>>> change. The important thing is that I modify the To header, it
> seems
>>>>>> that rewritting $tU would be the easiest.
>>>>> $tU is not writable, but just readable.
>>>>> If you want to change the "To" header you should do some "dirty" 
>>>>> replacing operation (see textops module).
>>>>
>>>> This is propably something we need to change and make the To and 
>>>> From headers writable.
>>>> It's not dirty to change them any more.
>>>>
>>>> David: In the original SIP 1.0 protocol the To/From headers was
> part 
>>>> of the dialog identification, thus you where not allowed to change 
>>>> them in a proxy. THis was kept in RFC3261 - sip v2 - but has been 
>>>> removed in an additional RFC a short while ago (seen from SIP
> history).
>>>>
>>>> Regards,
>>>> /O
>>>> _______________________________________________
>>>> Kamailio (OpenSER) - Users mailing list
>>>> Users at lists.kamailio.org
>>>> http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
>>>> http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>>
>>> _______________________________________________
>>> Kamailio (OpenSER) - Users mailing list
>>> Users at lists.kamailio.org
>>> http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
>>> http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
>>
>>
>> _______________________________________________
>> Kamailio (OpenSER) - Users mailing list
>> Users at lists.kamailio.org
>> http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
>> http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
>>
> 



More information about the sr-users mailing list