[OpenSER-Users] Preserving original number when using alias_db_lookup
Iñaki Baz Castillo
ibc at aliax.net
Mon Jun 30 00:08:30 CEST 2008
El Domingo, 29 de Junio de 2008, Stagg Shelton escribió:
> Thank you Iñaki. Not only did I find that my syntax made no sense, I
> also found that openser would not start because of it.
>
> I believe that I have found my solution with your help. The below
> syntax appears to be working with the results I intended.
>
> alias_db_lookup("dbaliases");
>
> if (!lookup("location")) {
>
> ...
>
> }
> }
> else
> {
> avp_pushto("$ru/username", "$oU");
> }
>
> What the above does for me is that OpenSER can receive an invite from
> one of my SIP providers. I can determine if the call is intended for
> one of the PBX's that are registered to OpenSER and appropriately
> route the call to the PBX that serves the number.
Hi, first this complex syntax is not needed anymore:
avp_pushto("$ru/username", "$oU");
because you can just do:
$rU = $oU;
But anyway I can't understand why you do it. In your case, please re-read the
doc of "lookup" function. When you do:
if (!lookup("location")) {
that will change the RURI ****just**** in the case the original RURI is an AoR
existing in the "location" table, this is: that user is registered in
OpenSer.
But in the case it's not registered then the RURI ***won't*** be changed so
you don't need, at all, to restore the RURI.
Well, imagine an example with your code:
- There is an alias:
boby at domain.com => 201 at domain.com
- 201 at domain.com is not registered in OpenSer.
- Your code:
=> RURI = boby at domain.com
alias_db_lookup("dbaliases");
=> RURI = 201 at domain.com
if (!lookup("location")) {
=> User not registered so RURI still is 201 at domain.com and this block
is not executed
....
}
else {
avp_pushto("$ru/username", "$oU");
=> Now RURI = boby at domain.com
}
The question is: why do you need RURI being the original? it makes no sense
(IMHO).
Regards.
--
Iñaki Baz Castillo
More information about the Users
mailing list