Hello all, i am currently confused by using the avpops function avp_delete. When i run avp_delete without the flag-value \g only the last value will be unset (like an undo). Is this the wanted behaviour?
EXAMPLE:
$avp(test) = "test" if( $avp(test)){xlog("L_NOTICE","result1:$avp(test)\n");}
$avp(test) = "nooo"; if( $avp(test)){xlog("L_NOTICE","result2:$avp(test)\n");}
avp_delete("$avp(test)"); if( $avp(test)){xlog("L_NOTICE","result3:$avp(test)\n");}
RESULT:
result1:test result2:nooo result3:test
Could anybody helps me to understand that?
thanks in advance, Sven
Sven, It looks as if it's pushing onto avp stack. Try doing the assignment as follows below.
$avp(test) := "value";
Sent from my iPhone
On Feb 21, 2012, at 11:45 PM, Sven Knoblich sven.knoblich@1und1.de wrote:
On 02/22/2012 09:45 AM, Sven Knoblich wrote:
Hello Sven,
After looking thru the code it seems that this is the wanted behaviour (something like sed with /g switch) even in 3.x (master).
From the fixup function of avp_delete : <code> case 'g': case 'G': ap->ops|=AVPOPS_FLAG_ALL; </code>
This flag is sent as the /all /parameter in destroy_avps in usr_avp.c method. (The avp's are inserted in memory in reversed order so it's a Last In First Out type structure)
Cheers Marius
On 2/22/12 10:26 AM, Sven Knoblich wrote:
But now you can enhance the docs, just commit some more details there about this case :-)
Thanks, Daniel