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:[EMAIL PROTECTED]: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: [EMAIL PROTECTED]) (IP: 192.168.13.101) - Tel 155 registered to 192.168.13.86 (OpenSER) (URI: [EMAIL PROTECTED]) (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.





_______________________________________________
Users mailing list
[email protected]
http://openser.org/cgi-bin/mailman/listinfo/users

Reply via email to