[SR-Users] [NOT Solved]Creating RURI ($ru) from Contact ($ct)
Daniel-Constantin Mierla
miconda at gmail.com
Tue May 29 10:57:29 CEST 2012
Hello,
in kamailio, if you want to apply immediately the changes done to the
sip request, then use msg_apply_changes() from textopsx module. Then you
can access it with the contact PV.
Also, the pvs for source ip and port are $si and $sp -- see the PV
cookbook in the wiki site at kamailio.org
Cheers,
Daniel
On 5/29/12 10:39 AM, Aft nix wrote:
> Hi,
>
> Sorry guyz, the problem is not solved as i thought. The script worked
> perfectly in my lab where i did'nt know that the wifi router is a so
> called "sip friendly router". It fixes broken contacts so it worked
> perfectly in my lab.
>
> But in my production server it did'nt work.
>
> Problem is when i put "contact" in hash table entry like following :
>
> sht(a=>$ci) = $ct;
>
> it puts the broken contact adress( I mean contact address with private
> IP) into the hashtable.
>
> At first i put my code after the execution of "fix_nated_contact()".
> But it did'nt work. Then i put a xlog() to print $ct. And to my
> surprise i saw that its printing the private IP instead of the public
> one. After searching through mailing list archives i came across this
> :
>
> http://lists.iptel.org/pipermail/serusers/2006-September/030511.html
>
> According to this although the contact is fixed with received IP and
> port, its not applied to the message buffer and kept in temporary
> storage. when the message is about to be sent over sockets this
> temporary storage is applied over the the original message buffer.
> pseudo variables like $ct will always reference to the original
> message, not the modified one after fix_nated_contact().
>
> So to populate my hashtable, i have to choices:
>
> 1. I can reference src_ip and src_port , put a ":" between them like
> following :
>
> sht(a=>$ci) = $fU + src_ip + ":" + src_port (Please help with the
> correct syntax for string concatenation).
>
> 2. Or if possible i reference the changed contact from the temporary
> storage, and put this into my hashtable.
>
> Please direct me which way should i go.
>
> Cheers.
>
> On Mon, May 28, 2012 at 8:25 PM, Aft nix <aftnix at gmail.com> wrote:
>> Hi all,
>> I'm posting the script which worked. In future if anybody faces the
>> same problem can get a solution out of this.
>>
>> In request_route:
>>
>> #!ifdef WITH_HASH
>> if (is_method("INVITE") && !has_totag()){
>> xdbg ("Contact [$ct] with Callid [$ci]");
>> $sht(a=>$ci) = $ct;
>> }
>> #!endif
>>
>> in route[WITHINDLG]
>>
>> #!ifdef WITH_HASH
>> xdbg ("ruri [$ru]");
>> if ($(sht(a=>$ci){nameaddr.uri}) != $ru){
>> xdbg ("hash table entry
>> [$sht(a=>$ci)]");
>> $ru = $(sht(a=>$ci){nameaddr.uri});
>> sht_rm_name_re("ha=>$ci");
>> xdbg ("rewriting ruri to [$ru]");
>> }
>> #!endif
>>
>>
>> Thanks everyone for the help. I'm marking this thread as solved.
>> --
>> -aft
>>
>>
>> --
>> -aft
>
>
--
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio Advanced Training, Seattle, USA, Sep 23-26, 2012 - http://asipto.com/u/katu
More information about the sr-users
mailing list