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

Reply via email to