[sr-dev] [permissions module] allow_source_address_group() drops the request if it returns 0

Daniel-Constantin Mierla miconda at gmail.com
Tue Feb 9 00:00:02 CET 2010



On 2/8/10 11:48 PM, Iñaki Baz Castillo wrote:
> El Lunes, 8 de Febrero de 2010, Daniel-Constantin Mierla escribió:
>
>    
>> returnin 0 from a module function means 'exit':
>> http://www.asipto.com/pub/kamailio-devel-guide/#c16return_values
>>      
> Ok:
>
> -------------
> 16.9.1. Return Values
>
> Returning values from the command functions have a special meaning in the
> configuration file. The command functions return an integer value, and the
> config file interpreter use it as follows:
>
>   - if<0 - evaluation of the return code is FALSE
>   - if 0 - the interpreter stop executing the configuration file
>   - if>0 - evaluation of the return code is TRUE
> -------------
>
> So what about if I want to develop a module function which can return 0 as a
> valid integer
You can do that ...
>   and store it in a pv?

but it won't get here!

>   (i.e. a function returning the number of
> locations for a given AoR).
>    

Return the value in a PV or make the function a new PV. All functions 
needing such behavior used this approach so far (see group, dispatcher, 
etc ...).

Returning 0 from a function (core or module) is 'exit' from the 
beginning of SER in 2001, it is how tm functions absorb retransmissions 
and the config is not executed further (e.g., t_check_trans(), 
t_newtran(), ...).


>>> It seems that allow_source_address_group() behaves as "return(0)" when
>>> the returned value is 0. But this is not documented and IMHO it cannot be
>>> the expected behavior, am I right?
>>>        
>> You mean 'return 0' is not documented or this particular function's
>> behavior with group id 0?
>>      
> "return 0" is document (AFAIK) but I didn't expect that any function returning
> 0 means "exiting".
>    

It means. 'return' is a core function.

> Also, in the current module (permissions) and current function
> (allow_source_address_group) this is a limitation
not a feature :-) ?!? Do you want to have if's around each functions to 
see if it is the case to exit the script?

Moreover cfg functions do not follow usual C/other languages patterns 
where 0 is false and !=0 (negative or positive) is true.

Cheers,
Daniel

>   as it doesn't allow
> returning a group value 0.
>
>    

-- 
Daniel-Constantin Mierla
eLearning class for Kamailio 3.0.0
* http://www.asipto.com/




More information about the sr-dev mailing list