[OpenSIPS-Users] overwriting AVPs at certain index
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Mon Nov 8 12:21:41 CET 2010
Hi Jayesh,
yes, you cannot initialized different vals for an AVP by using
indexes...Why ? it is simple - the values are a continuous array, and by
allowing init via indexes, you cannot guarantee this continuity (like
setting val index 0 and setting val index 3....that is bogus).
Regards,
Bogdan
Jayesh Nambiar wrote:
> Thank you Bogdan, actually this does a proper job. What I was doing
> was slightly different which I realized later, I was trying to
> initialize the AVP like this directly in my script:
> $avp(i:999) = 0;
> $(avp(variable)[$avp(i:999]) = $avp(value);
>
> This results an error in syslog saying:
> ERROR:core:pv_set_avp: Failed to replace avp
> ERROR:core:do_assign: setting PV failed
>
> I guess initializing an AVP is important with some value before
> assigning a value to certain index, something like this:
> $avp(variable) = $avp(default_value);
> $avp(i:999) = 0;
> $(avp(variable)[$avp(i:999]) = $avp(value);
>
> This works properly !!! So is it good to conclude that initializing an
> AVP is important before trying to assign a value at any particular index.
>
> --- Jayesh
>
>
> Hi Jayesh,
>
> Just tried the following script and it did the right job:
>
> <snap>
> $avp(s:value1) = "abc";
> $avp(s:value2) = "ABC";
>
> $avp(s:variable) = $avp(s:value1);
> $avp(i:999) = 0;
> $(avp(s:variable)[$avp(i:999)]) = $avp(s:value2);
>
> avp_print();
> </snap>
>
> and the result (from avp_print()) :
>
> Nov 4 11:32:49 [12046] INFO:avpops:ops_print_avp: p=0xb5ab5e48,
> flags=0x0000
> Nov 4 11:32:49 [12046] INFO:avpops:ops_print_avp:
> id=<999>
> Nov 4 11:32:49 [12046] INFO:avpops:ops_print_avp:
> val_int=<0>
> Nov 4 11:32:49 [12046] INFO:avpops:ops_print_avp: p=0xb5ab5e70,
> flags=0x0003
> Nov 4 11:32:49 [12046] INFO:avpops:ops_print_avp:
> name=<variable>
> Nov 4 11:32:49 [12046] INFO:avpops:ops_print_avp:
> val_str=<ABC / 3>
> Nov 4 11:32:49 [12046] INFO:avpops:ops_print_avp: p=0xb5ab5dc8,
> flags=0x0003
> Nov 4 11:32:49 [12046] INFO:avpops:ops_print_avp:
> name=<value2>
> Nov 4 11:32:49 [12046] INFO:avpops:ops_print_avp:
> val_str=<ABC / 3>
> Nov 4 11:32:49 [12046] INFO:avpops:ops_print_avp: p=0xb5ab5d88,
> flags=0x0003
> Nov 4 11:32:49 [12046] INFO:avpops:ops_print_avp:
> name=<value1>
> Nov 4 11:32:49 [12046] INFO:avpops:ops_print_avp:
> val_str=<abc / 3>
>
>
> Can you post the error/log you get?
>
> Regards,
> Bogdan
>
> Jayesh Nambiar wrote:
> > Hi All,
> > I am trying to overwrite certain values at specific index of AVP and
> > it doesn't work as expected. How I do it is:
> >
> > $avp(variable) = $avp(value1);
> > $avp(i:999) = 0;
> > $(avp(variable)[$avp(i:999)]) = $avp(value2);
> >
> > While executing this, opensips logs an error saying unable to
> replace
> > AVPs. Is the syntax wrong somewhere? I do this as I don't want
> to add
> > multiple values into single AVP and also I dont want to call
> > avp_delete function before assigning a new value to the AVP.
> Moreover
> > the value at $avp(i:999) can change and thus it is assigned to
> another
> > AVP.
> >
> > Any help related to AVP overwriting function would be very helpful.
> >
> > --- Jayesh
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
--
Bogdan-Andrei Iancu
OpenSIPS Bootcamp
15 - 19 November 2010, Edison, New Jersey, USA
www.voice-system.ro
More information about the Users
mailing list