Hi Klaus,
the problem should be fixed on CVS - the cause was the invalid regexp:
nothing (empty string) was matching (due the *) and this nothing was
found infinitely in the string. This was leading to an infinite loop
which was allocating private memory for replacing nothing with nothing
:).....
regards,
bogdan
Klaus Darilion wrote:
Hi!
Meanwhile I splitted the regexp into several smaller ones nad now it
works. But I found an interesting thing when removing blanks from an AVP:
This one works fine:
avp_subst("$avp(s:pai)/$avp(s:painb)","/[[:blank:]]//g");
This one causes "out of mem":
avp_subst("$avp(s:pai)/$avp(s:painb)","/[[:blank:]]*//g");
^
07:17:46 server2 /usr/sbin/openser[6565]: subst_run: running. r=0
07:17:46 server2 /usr/sbin/openser[6565]: subst_run: matched (0, 0): []
07:18:12 server2 /usr/sbin/openser[6565]: subst_run: running. r=0
07:18:12 server2 /usr/sbin/openser[6565]: subst_run: matched (0, 0): []
07:18:12 server2 /usr/sbin/openser[6565]: subst_run: running. r=0
07:18:12 server2 /usr/sbin/openser[6565]: subst_run: matched (0, 0): []
07:18:12 server2 /usr/sbin/openser[6565]: ERROR: replace_build: out of
mem (rpl)
07:18:12 server2 /usr/sbin/openser[6565]: subst_str: no match
07:18:12 server2 /usr/sbin/openser[6565]: avpops:ops_subst: subst to 0
avps
regards
klaus
Klaus Darilion wrote:
> Norman Brandinger wrote:
>
>> Hi Klaus,
>>
>> Below is a little test I put together to try to help you out:
>>
>> avp_write("<tel:+43108>", "$avp(s:pai)");
>>
avp_subst("$avp(s:pai)/$avp(s:cli)","/<tel\:(.*)>/\1/");
>> xlog("L_NOTICE", "pai=$avp(s:pai) cli=$avp(s:cli)\n");
>>
>> This is the result:
>>
>> pai=<tel:+43108> cli=+43108
>
>
> Hi Norman. Yes, you are right. I simply had a wrong regular
> expression. But now I have another problem:
>
> Input: $avp(s:pai) = '< tel:+43103 >'
> (the part within '')
>
>
avp_subst("$avp(s:pai)/$avp(s:paias)","/.*<[[:blank:]]*(.*?)[[:blank:]]*>.*/\1/")
>
>
> Output: $avp(s:paias) = 'tel:+43103 '
>
> Thus, the leading whitespace is removed, but not the trailing one,
> but I can't find an error in my regular expression. Maybe some regexp
> experts out there?
>
> thanks
> klaus
>
>>
>> Regards,
>> Norm
>>
>> Klaus Darilion wrote:
>>
>>> Hi!
>>>
>>> I have problems with avp_subst:
>>>
>>> I have $avp(s:pai) with the value <tel:+43108> (the < and >
belongs
>>> to the AVP)
>>>
>>> Then I want to extract the number into $avp(s:cli):
>>>
>>> avp_subst("$avp(s:pai)/$avp(s:cli)","/tel:(.*)/\1/")
>>>
>>> The result is <+43108>
>>>
>>> Can someone explain me why the leading < belongs to the result?
>>> Shouldn't it be removed?
>>>
>>> thanks
>>> klaus
>>