[SR-Users] [NOT Solved]Creating RURI ($ru) from Contact ($ct)

Aft nix aftnix at gmail.com
Tue May 29 11:03:04 CEST 2012


On Tue, May 29, 2012 at 2:57 PM, Daniel-Constantin Mierla
<miconda at gmail.com> wrote:
> 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
>

Hi Daniel,

Thank you for quick reply. I will test both and post updates.
Cheers.

>
> 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
>
>
>



-- 
-aft



More information about the sr-users mailing list