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@192.168.13.8) (IP: 192.168.13.101) - Tel 155 registered to 192.168.13.86 (OpenSER) (URI: 155@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.
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@192.168.13.8)
(IP: 192.168.13.101)
- Tel 155 registered to 192.168.13.86 (OpenSER) (URI:
155@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.
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
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@192.168.13.8) (IP: 192.168.13.101)
- Tel 155 registered to 192.168.13.86 (OpenSER) (URI:
155@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.
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
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@192.168.13.8) (IP: 192.168.13.101)
- Tel 155 registered to 192.168.13.86 (OpenSER) (URI:
155@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.
Hi Michel,
could you please post the message flow from the proxy.?
regards, bogdan
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@192.168.13.8) (IP: 192.168.13.101)
- Tel 155 registered to 192.168.13.86 (OpenSER) (URI:
155@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.
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users