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@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(a)192.168.13.8) (IP: 192.168.13.101)
>>> - Tel 155 registered to 192.168.13.86 (OpenSER) (URI:
>>> 155(a)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.
>>>
>>>
>