On Friday 24 December 2010, Daniel-Constantin Mierla wrote: > On 12/21/10 2:44 PM, Alex Hermann wrote: > > I'm currently toying with xavp's and have some trouble accessing the > > values. I want to have access to the xavp that isn't the last added > > one. From the wiki page on http://sip-router.org/wiki/devel/xavp I got > > the impression that indices are supported, but that doesn't seem to > > work. > > > > In the following fragment i want access to the values 1A& 1B, how to > > do that? > > > > $xavp(test=>a) = "1A"; > > $xavp(test[0]=>b) = "1B"; > > $xavp(test=>a) = "2A"; > > $xavp(test[0]=>b) = "2B"; > > Yes, indexes are supported, functionality should be: when you do not use > an index, then you just stack a new value. When you use indexes, you > overwrite. > > In this case you have to use indexes after a and be, like > $xavp(test=>a[0]) a.s.o. This also doesn't work, see below and the wiki page says the index should be on the avpname... Can you explain what the index on the avpname does and what the index on the subfield does, because i thought i understood, but it doesn't seem to work.
What i want to accomplish is to set an xavp (test) multiple times with multiple subfields (a & b) so that when i do an pv_unset($xavp(test)) i get the next set of subfields (to be used for a serial forking scenario later on). This already works. Now i want to have random access to the xavp, using an index to get to the right set of subfields. ie if i query $xavp(test[0]=>a) i get 2A, $xavp(test[1]=>b) should give 1B. If i get this working i'll post an interesting patch to sqlops soon :) I did some more testing and think there is a off-by-one bug somewhere: $xavp(test=>a) = "1A"; $xavp(test[0]=>b) = "1B"; $xavp(test=>a) = "2A"; $xavp(test[0]=>b) = "2B"; $xavp(test[1]=>a) = "3A"; $xavp(test[1]=>b) = "3B"; xlog("Index on subavp"); xlog("0: $xavp(test)"); xlog("0a: $xavp(test=>a[0])"); xlog("0b: $xavp(test=>b[0])"); xlog("1: $xavp(test)"); xlog("1a: $xavp(test=>a[1])"); xlog("1b: $xavp(test=>b[1])"); xlog("2: $xavp(test)"); xlog("2a: $xavp(test=>a[2])"); xlog("2b: $xavp(test=>b[2])"); xlog("Index on avpname"); xlog("0: $xavp(test[0])"); xlog("0a: $xavp(test[0]=>a)"); xlog("0b: $xavp(test[0]=>b)"); xlog("1: $xavp(test[1])"); xlog("1a: $xavp(test[1]=>a)"); xlog("1b: $xavp(test[1]=>b)"); xlog("2: $xavp(test[2])"); xlog("2a: $xavp(test[2]=>a)"); xlog("2b: $xavp(test[2]=>b)"); Results in: Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: Index on subavp Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 0: <<xavp:0xb3a627c4>> Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 0a: 2A Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 0b: 2B Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 1: <<xavp:0xb3a627c4>> Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 1a: <null> Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 1b: <null> Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 2: <<xavp:0xb3a627c4>> Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 2a: <null> Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 2b: <null> Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: Index on avpname Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 0: <<xavp:0xb3a627c4>> Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 0a: 2A Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 0b: 2B Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 1: <<xavp:0xb3a6286c>> Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 1a: 1A Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 1b: 1B Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 2: <null> Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 2a: <null> Dec 24 12:07:40 veyron wsproxy1[13032]: ERROR: <script>: 2b: <null> Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:470]: +++++ XAVP list: 0xb3a62770 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:473]: *** XAVP name: test Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:474]: XAVP id: 2063405720 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:475]: XAVP value type: 6 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:496]: XAVP value: <xavp:0xb3a627c4> Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:470]: +++++ XAVP list: 0xb3a627c4 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:473]: *** XAVP name: b Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:474]: XAVP id: 110 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:475]: XAVP value type: 2 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:484]: XAVP value: 2B Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:473]: *** XAVP name: a Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:474]: XAVP id: 109 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:475]: XAVP value type: 2 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:484]: XAVP value: 2A Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:505]: ----- XAVP list Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:473]: *** XAVP name: test Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:474]: XAVP id: 2063405720 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:475]: XAVP value type: 6 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:496]: XAVP value: <xavp:0xb3a6286c> Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:470]: +++++ XAVP list: 0xb3a6286c Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:473]: *** XAVP name: b Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:474]: XAVP id: 110 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:475]: XAVP value type: 2 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:484]: XAVP value: 3B Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:473]: *** XAVP name: a Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:474]: XAVP id: 109 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:475]: XAVP value type: 2 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:484]: XAVP value: 3A Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:473]: *** XAVP name: b Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:474]: XAVP id: 110 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:475]: XAVP value type: 2 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:484]: XAVP value: 1B Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:473]: *** XAVP name: a Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:474]: XAVP id: 109 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:475]: XAVP value type: 2 Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:484]: XAVP value: 1A Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:505]: ----- XAVP list Dec 24 12:07:40 veyron wsproxy1[13032]: INFO: <core> [xavp.c:505]: ----- XAVP list Notice that the index on the subfield doesn't return the proper values, but that the index on the avpname now returns 1A, 1B, 2A & 2B (still missing 3 thugh). If i remove the setting of test[1]: $xavp(test=>a) = "1A"; $xavp(test[0]=>b) = "1B"; $xavp(test=>a) = "2A"; $xavp(test[0]=>b) = "2B"; I get Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: Index on subavp Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 0: <<xavp:0xb3aa77c4>> Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 0a: 2A Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 0b: 2B Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 1: <<xavp:0xb3aa77c4>> Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 1a: <null> Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 1b: <null> Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 2: <<xavp:0xb3aa77c4>> Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 2a: <null> Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 2b: <null> Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: Index on avpname Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 0: <<xavp:0xb3aa77c4>> Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 0a: 2A Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 0b: 2B Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 1: <<xavp:0xb3aa76c8>> Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 1a: <null> Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 1b: <null> Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 2: <null> Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 2a: <null> Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: 2b: <null> Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:470]: +++++ XAVP list: 0xb3aa7770 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:473]: *** XAVP name: test Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:474]: XAVP id: 2063405720 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:475]: XAVP value type: 6 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:496]: XAVP value: <xavp:0xb3aa77c4> Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:470]: +++++ XAVP list: 0xb3aa77c4 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:473]: *** XAVP name: b Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:474]: XAVP id: 110 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:475]: XAVP value type: 2 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:484]: XAVP value: 2B Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:473]: *** XAVP name: a Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:474]: XAVP id: 109 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:475]: XAVP value type: 2 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:484]: XAVP value: 2A Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:505]: ----- XAVP list Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:473]: *** XAVP name: test Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:474]: XAVP id: 2063405720 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:475]: XAVP value type: 6 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:496]: XAVP value: <xavp:0xb3aa76c8> Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:470]: +++++ XAVP list: 0xb3aa76c8 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:473]: *** XAVP name: b Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:474]: XAVP id: 110 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:475]: XAVP value type: 2 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:484]: XAVP value: 1B Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:473]: *** XAVP name: a Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:474]: XAVP id: 109 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:475]: XAVP value type: 2 Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:484]: XAVP value: 1A Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:505]: ----- XAVP list Dec 24 12:08:43 veyron wsproxy1[13835]: INFO: <core> [xavp.c:505]: ----- XAVP list Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: Authorization processing. Dec 24 12:08:43 veyron wsproxy1[13835]: ERROR: <script>: Unauthorized (-5) - No credentials. (UA: Twinkle/1.4.2) Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: Ts:1293188923 TS:1293188923 request Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: [87.208.184.242:5066] Request. INVITE <sip:31887732...@speakup.nl> => <sip:4671900...@speakup.nl> cid:<jiqumpgknwbp...@waxy.wenlex.nl> len:1130 Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: Index on subavp Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 0: <<xavp:0xb3aa75cc>> Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 0a: 2A Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 0b: 2B Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 1: <<xavp:0xb3aa75cc>> Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 1a: <null> Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 1b: <null> Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 2: <<xavp:0xb3aa75cc>> Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 2a: <null> Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 2b: <null> Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: Index on avpname Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 0: <<xavp:0xb3aa75cc>> Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 0a: 2A Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 0b: 2B Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 1: <<xavp:0xb3aa7770>> Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 1a: <null> Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 1b: <null> Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 2: <null> Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 2a: <null> Dec 24 12:08:43 veyron wsproxy1[13839]: ERROR: <script>: 2b: <null> Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:470]: +++++ XAVP list: 0xb3aa77c4 Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:473]: *** XAVP name: test Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:474]: XAVP id: 2063405720 Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:475]: XAVP value type: 6 Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:496]: XAVP value: <xavp:0xb3aa75cc> Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:470]: +++++ XAVP list: 0xb3aa75cc Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:473]: *** XAVP name: b Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:474]: XAVP id: 110 Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:475]: XAVP value type: 2 Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:484]: XAVP value: 2B Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:473]: *** XAVP name: a Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:474]: XAVP id: 109 Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:475]: XAVP value type: 2 Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:484]: XAVP value: 2A Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:505]: ----- XAVP list Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:473]: *** XAVP name: test Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:474]: XAVP id: 2063405720 Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:475]: XAVP value type: 6 Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:496]: XAVP value: <xavp:0xb3aa7770> Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:470]: +++++ XAVP list: 0xb3aa7770 Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:473]: *** XAVP name: b Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:474]: XAVP id: 110 Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:475]: XAVP value type: 2 Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:484]: XAVP value: 1B Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:473]: *** XAVP name: a Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:474]: XAVP id: 109 Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:475]: XAVP value type: 2 Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:484]: XAVP value: 1A Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:505]: ----- XAVP list Dec 24 12:08:43 veyron wsproxy1[13839]: INFO: <core> [xavp.c:505]: ----- XAVP list Where have 1A and 1B gone? -- Alex Hermann _______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users