[Users] DLG: BYE not detected because of route reccord

Bogdan-Andrei Iancu bogdan at voice-system.ro
Tue Apr 3 10:55:39 CEST 2007


Hi Michel,

I'm afraid it is not quite correct what you did :).. I will take a look 
at the patch from tracker (for dialog matching without DID) and I will 
upload it on SVN - probably this will solve your problem.

regards,
bogdan

Michel Bensoussan wrote:
> Hi Bogdan
>
> I find a solution but I'm not sure this is a good one.
> When the callee sends BYE, it is handled as a request and dlg_onreq() 
> is called.
> In dlg_onreq(), teh code checks if there is a tag in To header. If 
> this is the case the messaged is not handled:
>
> void dlg_onreq(struct cell* t, int type, struct tmcb_params *param)
> {
>     ...
>     s = get_to(req)->tag_value;
>     if (s.s!=0 && s.len!=0)
>         return;
>     ...
> }
>
> I propose to modify as follow:
>
> void dlg_onreq(struct cell* t, int type, struct tmcb_params *param)
> {
>     ...
>     s = get_to(req)->tag_value;
>     if (s.s!=0 && s.len!=0)
>     {
>        *dlg_onroute(req, 0, 0);*                            
> <-------------------------------------
>         return;
>     }
>     ...
> }
>
> The dlg_onroute() function will handle the BYE message.
>
> What do you think?
>
> Regards,
> Michel.
>
>
> Michel Bensoussan wrote:
>> Hi Bogdan
>>
>> This is what I'm doing.
>>
>> As you can see in the INVITE message:
>>
>>    Request-Line: INVITE sip:101 at 192.168.13.8:5060 SIP/2.0
>>    Message Header
>>        Record-Route: 
>> <sip:192.168.13.86;lr=on;ftag=DB9D128321CC9C57E8B5;did=9f2.26ab69c5>
>>        ......
>>
>> The BYE from callee pass through the proxy, but there is no 
>> Record-Route header and the function loose_route() returns false.
>> dlg_onroute() in called only when there is record-route. As defined 
>> in dialog.c:mod_init(), line 240, dlg_onroute() is registered as RR 
>> callback.
>> How can I callback dlg_onroute in case there is no RR?
>>
>> Regards,
>> Michel.
>>
>> Bogdan-Andrei Iancu wrote:
>>> Hi Michel,
>>>
>>> if you do record_route() also for the calls going outside your 
>>> domain, the BYE from callee should pass through your proxy.
>>>
>>> regards,
>>> bogdan
>>>
>>> Michel Bensoussan wrote:
>>>> Hello
>>>>
>>>> The dialog module checks SIP messages only if the OpenSER in on 
>>>> record-route header in function dlg_onroute().
>>>> When the callee in registered on another SIP Server and the callee 
>>>> sends BYE, the OpenSER is not on record-route header. In this case, 
>>>> the dialog module doesn't detect end of call.
>>>> Is there a way to callback the dlg_onroute() function not only in 
>>>> case of record-route?
>>>>
>>>> The configuration is as following:
>>>> - Tel 101 registered to 192.168.13.8 (siproxd) (URI: 
>>>> 101 at 192.168.13.8) (IP: 192.168.13.101)
>>>> - Tel 155 registered to 192.168.13.86 (OpenSER) (URI: 
>>>> 155 at 192.168.13.86) (IP: 192.168.13.155)
>>>> - 155 is the caller and 101 is the callee.
>>>>
>>>> Attached, message capture (ethereal) when the callee (101) 
>>>> terminate the call.
>>>>
>>>> Thanks.
>>>>
>>>> Regards,
>>>> Michel.
>>>>
>>>>
>>





More information about the Users mailing list