[Users] Recursive routes and retcode

Daniel-Constantin Mierla daniel at voice-system.ro
Mon Apr 10 20:10:23 CEST 2006


Hello,

On 04/10/06 20:23, JF wrote:
> Hi,
>
> You *can* tell the recursive call to properly return the retcode.
> Instead of "return(route(2))", enumerate all possible return codes
> after the recursive call (inside route[2]) and call return with the
> same retcode:
>
> route[2] {
>     if(lookup("location")) return(2);
>     if(!uri =~ "^sip:[0-9]{6}[0-9]*@") return(3);
>     strip_tail(1);
>     route(2);
>     if (retcode==1) {
>         return(1);
>     } else if (retcode==2) {
>         return(2);
>     }
>  }
>   
instead of all these if-else statements you can use the 'switch' statement.
http://openser.org/dokuwiki/doku.php?id=openser_core_cookbook#switch

It was designed for such cases.

However, return(statement) will be taken in consideration for further 
enhancements of the configuration language.

Cheers,
Daniel

> Hope this helps.
>
> JF
>
> On 4/10/06, Andreas Granig <andreas.granig at inode.info> wrote:
>   
>> Hi,
>>
>> I'd like to recursively strip off digits from the tail of a username (a
>> numeric number in fact) and do a lookup in usrloc until an aor is found
>> or the number underruns a lower bound, like:
>>
>> route[2] {
>>    if(lookup("location")) return(2);
>>    if(!uri =~ "^sip:[0-9]{6}[0-9]*@") return(3);
>>    strip_tail(1);
>>    route(2);
>> }
>>
>> route[3] {
>>    # check if numeric, then:
>>    route(2);
>>    if(retcode==1) {...}
>>    else if(retcode==2) {...}
>>    else if(retcode == 3) {...}
>>    # ...
>> }
>>
>> The thing is that it obviously doesn't work (retcode is 1 as soon as one
>> recursion happens) because I can't tell the recursive call to properly
>> return the retcode like "return(route(2))" or "return($?)" or something
>> like that. Any other ideas except using flags or is that the only way to go?
>>
>> Thanks,
>> Andy
>>
>> _______________________________________________
>> Users mailing list
>> Users at openser.org
>> http://openser.org/cgi-bin/mailman/listinfo/users
>>
>>     
>
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users
>
>   




More information about the sr-users mailing list