[SR-Users] Problem Storing USRLOC Additional Attributes

Luca Mularoni luca.mularoni at gmail.com
Fri Jul 3 16:47:09 CEST 2015


Hi Daniel,
I would propend for a usrloc issue, because if I print just created xavp 
(below chunk of real code I'm using for debugging) before invoke save() 
func:

     xlog("REGDATAGET - FromUser [$xavp(ulvals[0]=>FromUser)]\n");
     xlog("REGDATAGET - FromDomain [$xavp(ulvals[0]=>FromDomain)]\n");
     xlog("REGDATAGET - PubNetIP [$xavp(ulvals[0]=>PubNetIP)]\n");
     xlog("REGDATAGET - PubNetPort [$xavp(ulvals[0]=>PubNetPort)]\n");
     xlog("REGDATAGET - PubViaIP [$xavp(ulvals[0]=>PubViaIP)]\n");
     xlog("REGDATAGET - PubViaPort [$xavp(ulvals[0]=>PubViaPort)]\n");
     xlog("REGDATAGET - PubViaProt [$xavp(ulvals[0]=>PubViaProt)]\n");
     xlog("REGDATAGET - PubSocIP [$xavp(ulvals[0]=>PubSocIP)]\n");
     xlog("REGDATAGET - PubSocPort [$xavp(ulvals[0]=>PubSocPort)]\n");

in syslog I can find all atttributes filled with their real values.

Note: in doc I didn't find a function to print data of all xavps.
'avp_print()' exported by avpops module work just with avp vars.

Regards

Luca

Il 03/07/2015 13:32, Daniel-Constantin Mierla ha scritto:
> Hello,
>
> hmm, can you print the xavps just after you added them before 
> save(location)? Trying to spot where the issue is, in storing inside 
> usrloc or outside in the xavp framework. There should be some function 
> to dump all xavps, iirc.
>
> Cheers,
> Daniel
>
> On 02/07/15 23:09, Luca Mularoni wrote:
>> Hi Daniel,
>> yes, when I use db_mode 2 [1 not tested], after 'timer_interval' 
>> seconds (30s in my case),
>> data are passed to location_attrs table (through insert query for 
>> first registration and then delete/insert for refresh)
>> but just first and last attribute are passed (i.e. in db table I can 
>> find just first and last attribure for each |ruid).
>>
>> Regards
>>
>> Luca
>>
>> |
>> Il 02/07/2015 18:12, Daniel-Constantin Mierla ha scritto:
>>> Hello,
>>>
>>> when you use db_mode 1 or 2, do you see the values in location_attrs
>>> database table?
>>>
>>> Cheers,
>>> Daniel
>>>
>>> On 02/07/15 12:45, Luca Mularoni wrote:
>>>> Hi All,
>>>> I'm using kamailio 4.2.5 (compiled from source and aligned up to
>>>> commit [00a36ae07c587992d6486277ce2e9ae6c009685f]).
>>>> In order to enrich users data collected during registering phase, I
>>>> would like to store them in USRLOC Additional Attributes
>>>> through the use of 'xavp_contact' structure, but I'm having problems
>>>> storing them.
>>>> Below relevant chunks of config:
>>>>
>>>> ...
>>>> # ----- usrloc params -----
>>>> modparam("usrloc", "db_mode", 2)
>>>> modparam("usrloc", "use_domain", 0)
>>>> modparam("usrloc", "xavp_contact", "ulvals")
>>>> ...
>>>>
>>>> route[REGISTRAR] {
>>>>      ...
>>>>      # Just an example
>>>>      $xavp(ulvals=>A) = "A";
>>>>      $xavp(ulvals[0]=>B) = "B";
>>>>      $xavp(ulvals[0]=>C) = "C";
>>>>      $xavp(ulvals[0]=>D) = "D";
>>>>      ...
>>>>      if (!save("location"))
>>>>          sl_reply_error();
>>>>      exit;
>>>> }
>>>>
>>>> route[LOCATION] {
>>>>      ...
>>>>      if(!lookup("location") {
>>>>          # Handle Failure
>>>>          ...
>>>>      }
>>>>      # Print USRLOC Additional Attributes
>>>>      # Just an Example
>>>>      $var(i) = 0;
>>>>      $var(N) = $branch(count);
>>>>      while($var(i)<=$var(N)) {
>>>>          xlog("LOC - [$var(i)] - A [$xavp(ulvals[$var(i)]=>A)]\n");
>>>>          xlog("LOC - [$var(i)] - B [$xavp(ulvals[$var(i)]=>B)]\n");
>>>>          xlog("LOC - [$var(i)] - C [$xavp(ulvals[$var(i)]=>C)]\n");
>>>>          xlog("LOC - [$var(i)] - D [$xavp(ulvals[$var(i)]=>D)]\n");
>>>>          $var(i) = $var(i) + 1;
>>>>      }
>>>>      ...
>>>> }
>>>>
>>>> And this is the relevant chunk of syslog when a local subscriber is
>>>> found in 'location' table:
>>>> ...
>>>> LOC - [0] - A [A]
>>>> LOC - [0] - B [<null>]
>>>> LOC - [0] - C [<null>]
>>>> LOC - [0] - D [D]
>>>> ...
>>>>
>>>> Summing up, it seems that when xavp structure is stored in memory,
>>>> just first and last elementsare inserted.
>>>> In real config I'm using more than 4 attributes and behaviour is the
>>>> same: just first and last are stored.
>>>> I've tried also with modparam("usrloc", "db_mode", 0) but the problem
>>>> remains.
>>>>
>>>> Where I'm wrong in using this structure? Or it could be a bug?
>>>>
>>>> Thank You in advance for your help
>>>>
>>>> Luca Mularoni
>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>
>
> -- 
> Daniel-Constantin Mierla
> http://twitter.com/#!/miconda  -http://www.linkedin.com/in/miconda
> Book: SIP Routing With Kamailio -http://www.asipto.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20150703/565b51d2/attachment.html>


More information about the sr-users mailing list