[sr-dev] how to define an infinite while loop?

Ovidiu Sas osas at voipembedded.com
Wed Apr 7 20:06:20 CEST 2010


Ohh ... it is $var(true) and not $true ....
I think having a $true pvar would be nice.
But I would like to have the $true pvar for all flavors, not only for
KAMAILIO flavor.


Thanks,
Ovidiu

On Wed, Apr 7, 2010 at 2:02 PM, Ovidiu Sas <osas at voipembedded.com> wrote:
> Actually, the modparam doesn't work.  And I got these errors with the
> following simple config:
>
> #!KAMAILIO
>
> mpath="/usr/lib/kamailio/modules_k/:/usr/lib/kamailio/modules/"
> loadmodule "xlog.so"
> loadmodule "pv.so"
> modparam("pv", "varset", "true=i:1")
>
>
> route{
>        xlog("L_INFO","$true\n");
> }
>
> ERROR: <core> [pvapi.c:501]: error searching pvar "true"
> ERROR: <core> [pvapi.c:705]: wrong char [e/101] in [$true ] at [4 (0)]
> ERROR: xlog [xlog.c:305]: wrong format[$true ]!
> ERROR: <core> [route.c:1026]: fixing failed (code=-1) at
> cfg:/etc/kamailio/kamailio.cfg:10
>
>
> I haven't used the varset before, so maybe I'm doing something wrong here ...
>
>
> On Wed, Apr 7, 2010 at 1:01 PM, Ovidiu Sas <osas at voipembedded.com> wrote:
>> Yes, it was in 1.5 and it was really handy.
>> The modparam("pv", "varset", "true=i:1") seems to do the trick.  It is
>> an extra line in the config but seems to be fine.
>>
>> Thanks,
>> Ovidiu
>>
>> On Wed, Apr 7, 2010 at 12:25 PM, Daniel-Constantin Mierla
>> <miconda at gmail.com> wrote:
>>>
>>>
>>> On 4/7/10 6:14 PM, Ovidiu Sas wrote:
>>>
>>> How about defining a new PV: '$true'.
>>> If we have a constant word in the while loop, then yes, it might be a
>>> missconfiguration and it is good to have the warning.
>>> Having a '$true' PV will mean that we want an infinite loop and
>>> there's no need to print the warning.
>>> The '$true' will make the config more easy to read as opposed to
>>> defining a variable just for the purpose of creating an infinite loop.
>>>
>>>
>>> never used the while (true) loop, was it in 1.5? If yes, we can wrap the
>>> warning log in #!KAMAILIO compat mode.
>>>
>>> An optimization to Andrei's suggestion is to init the true var at startup,
>>> to avoid assignment every cfg execution:
>>>
>>> modparam("pv", "varset", "true=i:1")
>>>
>>> Cheers,
>>> Daniel
>>>
>>> Thanks,
>>> Ovidiu
>>>
>>> On Fri, Apr 2, 2010 at 4:53 AM, Andrei Pelinescu-Onciul
>>> <andrei at iptel.org> wrote:
>>>
>>>
>>> On Apr 01, 2010 at 22:23, Ovidiu Sas <osas at voipembedded.com> wrote:
>>>
>>>
>>> If I define an infinite loop like this:
>>> while( true ) {
>>>     ...
>>> }
>>> the following warning is reported:
>>> WARNING: <core> [cfg.y:3307]: warning in config file
>>> /etc/kamailio/kamailio.cfg, line 4, column 9-12: constant value in
>>> while(...)
>>> The config file used for testing:
>>> #!KAMAILIO
>>>
>>> route{
>>>         while( true ) {
>>>                 exit;
>>>         }
>>>         exit;
>>> }
>>>
>>>
>>> How can I define a simple infinite loop without getting a warning in the
>>> logs.
>>>
>>> I don't want to define a variable just for the while loop and test it.
>>> $var(true) = 1;
>>> while ($var(true)) {
>>>     ...
>>> }
>>>
>>> Is there a specific PV like '$null' or a specific keyword?
>>>
>>>
>>> No, you have to live with the warning.
>>> In most cases infinite loops are a bug and hence we better have the
>>> warning (this is a sip router and not a general programing language).
>>>
>>> Andrei
>>>
>>>
>>>
>>> _______________________________________________
>>> sr-dev mailing list
>>> sr-dev at lists.sip-router.org
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>>
>>>
>>> --
>>> Daniel-Constantin Mierla * http://www.asipto.com/ *
>>> http://twitter.com/miconda *
>>> http://www.linkedin.com/in/danielconstantinmierla
>>
>



More information about the sr-dev mailing list