[SR-Users] routing SIP REGISTER with app_perl
Daniel-Constantin Mierla
miconda at gmail.com
Tue Sep 16 19:01:18 CEST 2014
Hello,
On 16/09/14 18:37, Vik Killa wrote:
> Thanks Daniel,
> I want to remove the htable entry after the register goes through, and
> I also want to check if the htable entry exists later.
>
> I see
>
> sht_rm_value_re("ha=>.*");
this is going to remove all the items from the hash table -- perhaps you
don't want to do that.
To remove the entry you added for register once the registration was
successful, add reply_route where you check if it is REGISTER and the
code is 200, then remove the item using the call id (same key as you
used to add the item).
$sht(a=>$ci::dest_server) = $null;
Assigning $null removes the respective item from hash table.
>
> to remove the htable entry but how do i later check if the key exists?
$null can be used to test if key exists or not, like if($sht(a=>x)==$null)
Cheers,
Daniel
>
> Thanks
> /V
>
> On Tue, Sep 16, 2014 at 11:52 AM, Daniel-Constantin Mierla
> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
> Hello,
>
> if you want to rely on kamailio to memorize where to send the
> following register, the hash table is the right tool.
>
> Cheers,
> Daniel
>
>
> On 16/09/14 03:37, Vik Killa wrote:
>> Hello,
>> I'm learning Kamailio. My ultimate goal is to be able to route
>> SIP messages from User Agents to specific FS boxes.
>>
>> I'm starting with routing REGISTER messages.
>> I used app_perl to randomly lookup one of the FS box's IP Address
>> from postgres database, then I stored the IP in avp and then in
>> hash. It seemed like overkill but it was the only way I could
>> keep the FS IP address in memory between the first REGISTER and
>> REGISTER with Auth.
>>
>> my app_perl script sets the IP as follows:
>>
>> my $sth = $dbh->prepare("SELECT ip_address FROM host_machine
>> WHERE is_online = true ORDER BY random() LIMIT 1");
>> $sth->execute();
>> my $host_ip_address = $sth->fetchrow();
>> Kamailio::AVP::add(10, "sip:$host_ip_address:5060");
>>
>> And here is my kamailio.cfg for REGISTERs
>>
>> route[REGISTRAR]
>> {
>>
>> if (!is_method("REGISTER|PUBLISH"))
>> return;
>>
>> if (is_present_hf("Authorization")) {
>> add_path_received();
>> $avp(i:10) = $sht(a=>$ci::dest_server);
>> avp_pushto("$du", "$avp(i:10)");
>> } else {
>> perl_exec("random_server");
>> avp_pushto("$du", "$avp(i:10)");
>> $sht(a=>$ci::dest_server) = $avp(i:10);
>>
>> }
>> t_relay();
>>
>> exit;
>> }
>>
>>
>> "random_server" is the perl script to get the FS IP address...
>> Seems crude but works...
>> I'm sure there is probably a more elegant way to do what im
>> trying so any advice and criticism is appreciated, thank you!
>>
>> /V
>>
>>
>>
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>> sr-users at lists.sip-router.org <mailto:sr-users at lists.sip-router.org>
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
> --
> Daniel-Constantin Mierla
> http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> -http://www.linkedin.com/in/miconda
> Next Kamailio Advanced Trainings 2014 -http://www.asipto.com
> Sep 22-25, Berlin, Germany
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
> list
> sr-users at lists.sip-router.org <mailto:sr-users at lists.sip-router.org>
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Next Kamailio Advanced Trainings 2014 - http://www.asipto.com
Sep 22-25, Berlin, Germany
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20140916/23febe90/attachment.html>
More information about the sr-users
mailing list