Hey Patrick,
Thank you for the reply!
I managed to figure this out.
What ended up happening was my PBX value was in fact never being updated in the
hash table for cached_local. I managed to fix it by using a pseudo variable as
my value. For example:
cache_store("local","PBX","$avp(PBX)",1200); is
now cache_store("local",’$fU’,"$avp(PBX)",1200);
if(cache_fetch("local","PBX",$avp(PBX)))
is now if(cache_fetch("local",’$fU’,$avp(PBX)))
this way it build a new entry for each userID and what PBX it belongs to in the
local hashtable.
From: [email protected]
[mailto:[email protected]] On Behalf Of Patrick Wakano
Sent: Tuesday, December 1, 2015 6:04 PM
To: OpenSIPS users mailling list <[email protected]>
Subject: Re: [OpenSIPS-Users] Issues with registration proxy
Hi,
I think cached attributes are like global variables, unique and valid in the
whole Opensips execution. You can store them and fetch at any time regardless
the message you are handling. So, as you suspect, the logic of the piece of
code you showed will store for 1200s the value in cache for the first request
that comes in. During this lifetime, any other subsequent request won't cause
an update in its value. After 1200s the cached attribute will be deleted and
the whole logic will repeat in the next request it receives.
Not sure why you tried to use the cache to store your domain, maybe because you
need it later in your dialog. If this is the case rethink your logic and use
dialog variables.
Patrick
On Tue, Dec 1, 2015 at 7:29 PM, Travis Manson-Drake
<[email protected]<mailto:[email protected]>> wrote:
Hello Everyone!
Hope you’re all doing well.
I seem to be having an issue.
Basically I’m using OpenSIPS as a proxy that will receive request from UAC’s,
then query a database to find out what Sipserver it belongs to then store the
result with cachdb_local as an $avp variable, and finally modify the R-uri of
the sip message to the UAC gets to the correct endpoint. I’ve got it working
for the most part however I seem to be having an issue when I try to have
multiple UAC’s hit the proxy.
I think whats happening is the value stored in memchache is the first Sipserver
the proxy gets a request for.
For example:
If UAC1 sends a REGISTER to the proxy and the proxy finds out it belongs on
SIPServ1 it then sets the AVP to sipserv1
Now a few minutes later UAC2 comes along with a same REGISTER request but this
time it belongs to SIPServ2, however this time it receives a 403 bad auth from
sipserv2.
Here’s my current logic for DB query and memcache store:
NOTE: This is also in the REQUEST Route section of my logic, so this takes
place before it hits any other routing logic.
if(cache_fetch("local","PBX",$avp(PBX)))
{
$rd = $avp(PBX);
xlog("this is the value of the modified R-uri: $ru\n");
}
else {
avp_db_query("select Servers.ipaddress from Servers
where Servers.ID in (select phone.ServerID from phone where phone.mac in
(select MAC FROM `phone_registrations` where auth_userid = '$fU'))",
"$avp(PBX)");
cache_store("local","PBX","$avp(PBX)",1200);
}
Do you guys have any ideas on what I’m missing, or any advice?
Thank you in advanced!
Travis Manson-Drake
Voice Systems Analyst L1
Simply Bits, LLC
Now You’re Thinkin’ Smart!
5225 N. Sabino Canyon Road
Tucson, AZ 85750
Phone: 520-545-0311<tel:520-545-0311>
Fax: 520-545-7252<tel:520-545-7252>
Support Hotline: 5205450333<tel:5205450333>
www.simplybits.com<http://www.simplybits.com/>
_______________________________________________
Users mailing list
[email protected]<mailto:[email protected]>
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users