[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