[SR-Users] Pseudo variables and uid_domain module compatibility

Philippe Sultan philippe.sultan at gmail.com
Thu Jan 24 16:27:27 CET 2013


Thank you Daniel, your answer helped a lot.

With :
#!KAMAILIO
loadmodule "pv.so"
$avp(fd.did)

Everything works fine, but only if I turn off caching with :
modparam("uid_domain", "db_mode", 0)

Otherwise, avps are not loaded from the db. Digging into
modules/uid_domain/domain.c, I figured out that the default flag value 0
for records in the uid_domain table would make the load_domains function
skip the records, see (in load_domains) :
                /* Skip entries that are disabled/scheduled for removal */
                if (flags & SRDB_DISABLED) goto skip;
                /* Skip entries that are for serweb/ser-ctl only */
                if (!(flags & SRDB_LOAD_SER)) goto skip;

Setting the flag value to 1 does make the load_domains function work as
expected, and load the records from the db.

Maybe the uid_domain-create.sql file under utils should be modifed.

Thanks again Daniel,

Philippe

2013/1/24 Daniel-Constantin Mierla <miconda at gmail.com>

>  The sript compatibility was set to kamailio strict mode, throwing error
> if $xy was not a pv. You can fetch latest master and should work like if no
> pv found as $xy, then is set as avp.
>
> Even if with your version, adding #!SER as first line should make it work
> with $fd.did...
>
> Cheers,
> Daniel
>
>
> On 1/24/13 10:58 AM, Daniel-Constantin Mierla wrote:
>
> Hi Philippe,
>
> On 1/23/13 11:54 PM, Philippe Sultan wrote:
>
> Hey Daniel,
>
> Thanks a lot for your help.
>
>   do you have #!SER as first line? This part should be the same ... if pv
>> not found, then it should be considered avp. I will try to see what is the
>> issue.
>>
>
> I don't have #!SER
>
>
> it should not be needed for this case, if $xyz is not found as pv, it is
> considered avp.
>
>
>
>>  Anyhow, for the moment, if not working, load pv and then try:
>> - $fd and $td must stay as parameters for lookup_domain()
>> - for strempty() try to use $avp(fd.did) and $avp(td.did)
>>
>
> I loaded pv, and modified the script accordingly. No syntax errors
> anymore, but avps are not populated from the data stored in the db. Maybe a
> problem with lookup_domain?
>
>
> the modules_s/domain was only renamed to uid_domain to avoid conflict with
> the other domain module. No other recent changes to my knowledge. Can you
> try to put IF around it and see if returns true or false? Can you check the
> sql queries in the server to see if they are returning something?
>
> Cheers,
> Daniel
>
>
> Here's the excerpt of the script (I replaced the selects with '@' by
> '$sel()', and added a dump_attrs()) :
>         xlog("L_INFO", "from.uri.host : $sel(from.uri.host)\n");
>         xlog("L_INFO", "ruri.host : $sel(ruri.host)\n");
>
>         lookup_domain("$fd", "$sel(from.uri.host)");
>         lookup_domain("$td", "$sel(ruri.host)");
>
>         xlog("L_INFO", "fd : $avp(fd.did)\n");
>
>         dump_attrs();
>
>         if (strempty($avp(fd.did)) && strempty($avp(td.did))) {
>                 # Neither the calling nor the called domain is local
>                 # This is a relaying attempt which should be forbidden
>                 sl_reply("403", "Relaying Forbidden");
>                 drop;
>         }
>
> And as a result :
> 0(22008) INFO: <script>: from.uri.host : ext.test.r3load.voip
>  0(22008) INFO: <script>: ruri.host : ext.test.r3load.voip
>  0(22008) INFO: <script>: fd : <null>
>  0(22008) INFO: avp [avp.c:573]: class=GLOBAL
>  0(22008) INFO: avp [avp.c:575]: INFO: No AVP present
>  0(22008) INFO: avp [avp.c:583]: track=FROM class=DOMAIN
>  0(22008) INFO: avp [avp.c:585]: INFO: No AVP present
>  0(22008) INFO: avp [avp.c:593]: track=TO class=DOMAIN
>  0(22008) INFO: avp [avp.c:595]: INFO: No AVP present
>  0(22008) INFO: avp [avp.c:603]: track=FROM class=USER
>  0(22008) INFO: avp [avp.c:605]: INFO: No AVP present
>  0(22008) INFO: avp [avp.c:613]: track=TO class=USER
>  0(22008) INFO: avp [avp.c:615]: INFO: No AVP present
>  0(22008) INFO: avp [avp.c:623]: track=FROM class=URI
>  0(22008) INFO: avp [avp.c:625]: INFO: No AVP present
>  0(22008) INFO: avp [avp.c:633]: track=TO class=URI
>  0(22008) INFO: avp [avp.c:635]: INFO: No AVP present
>
> In the db :
> +----+----------------------+----------------------+-------+
> | id | did                  | domain               | flags |
> +----+----------------------+----------------------+-------+
> |  1 | ext.test.r3load.voip | ext.test.r3load.voip |     0 |
> +----+----------------------+----------------------+-------+
>
> Thanks again!
>
> Philippe
>
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing listsr-users at lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
> --
> Daniel-Constantin Mierla - http://www.asipto.comhttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
> Kamailio World Conference, April 16-17, 2013, Berlin
>  - http://conference.kamailio.com -
>
>
> --
> Daniel-Constantin Mierla - http://www.asipto.comhttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
> Kamailio World Conference, April 16-17, 2013, Berlin
>  - http://conference.kamailio.com -
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>


-- 
Philippe Sultan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20130124/15fc310e/attachment.htm>


More information about the sr-users mailing list