[OpenSER-Devel] discussion: issues with local_route

Daniel-Constantin Mierla miconda at gmail.com
Thu Jun 12 09:59:56 CEST 2008


Hello Inaki,


On 06/12/08 10:49, Iñaki Baz Castillo wrote:
> El Wednesday 11 June 2008 18:47:55 Daniel-Constantin Mierla escribió:
>   
>> The function run_top_route() is called for the local_route. What happens
>> if:
>>
>> route {
>> ...
>> setsflag(3);
>> if(method=="INVITE")
>>     m_dump();
>> if(issflagset(3))
>> {
>>    # is it going here?   <------------- A
>> }
>>
>> if(issflagset(5))
>> {
>>    # is it going here?    <------------- B
>> }
>>
>> ....
>> }
>>     
>
> Perhaps I don't understand the example, but, why should flag(5) be set?
> Maybe the example you mean is something as the following?
>
>
>
> route {
>    setsflag(3);
>    if(method=="INVITE")
>        m_dump();
>    if(issflagset(3))
>    {
>          # Is it executed for the incoming INVITE?      <-- A
>    } 
> }
>
>
> local_route {
>    if(issflagset(3))
>    {
>          # Is it executed for the dummped MESSAGE?  <-- B
>    } 
> }
>
>
> In this example I hope "A" is executed for INVITE (as normal) while "B" is not 
> executed for the dummped MESSAGE since I expect the flag(3) was just enabled 
> for the INVITE. Is it?
>   
In your example, neither A or B is not executed.

Here is the problem. Script flag 3 is set for the environment of INVITE, 
local_route is executed, and being a top route, for a new SIP request 
(the MESSAGE sent by m_dump) the script flags are reset to 0. The 
condition for B is not met, when returning to 'route' scripts flags are 
0, so condition for A is not met as well.

In my example, if you set a flag in local_route, that flag will be set 
in 'route' after the call of m_dump.

Cheers,
Daniel

>
> Best regards.
>
>
>
>   

-- 
http://www.asipto.com




More information about the Devel mailing list