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