[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