[prev in list] [next in list] [prev in thread] [next in thread]
List: openser-users
Subject: Re: [SR-Users] How to access additional xavp's
From: Alex Hermann <alex () speakup ! nl>
Date: 2010-12-24 11:27:41
Message-ID: 201012241227.42104.alex () speakup ! nl
[Download RAW message or body]
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:31887732510@speakup.nl> => <sip:4671900000@speakup.nl> \
cid:<jiqumpgknwbpxsn@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
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic