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():
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).