I'm looking at the dlg_ontimeout function [dlg_handlers.c:1369] and I understand the code, the DLGCB_EXPIRED callbacks are not called when the send_bye parameter is set to 1.
I'm looking at the block 1399-1408.
From: Mickael Marrache [mailto:mickaelmarrache@gmail.com] Sent: Wednesday, April 15, 2015 3:53 PM To: sr-users@lists.sip-router.org Subject: RE: No CDR is written when dialog timeouts
I also confirm the cdr_on_create() [acc_cdr.c:718] function is called since I can see the debug statement "dialog '%p' created!".
From: Mickael Marrache [mailto:mickaelmarrache@gmail.com] Sent: Wednesday, April 15, 2015 3:48 PM To: sr-users@lists.sip-router.org Subject: No CDR is written when dialog timeouts
Hi,
I'm testing the dialog timeout scenario and I see that no CDR is written.
This is my configuration:
modparam("acc", "cdr_enable", 1)
modparam("acc", "cdr_expired_dlg_enable", 1)
modparam("acc", "cdr_start_on_confirmed", 1)
modparam("acc", "cdr_log_enable", 0)
modparam("acc", "cdr_on_failed", 0)
I can confirm the cdr_on_expired() [acc_cdr.c:684] function is not called since I don't see the debug statement "dialog '%p' expired!\n".
(I precise that CDR generation works fine for regular hangup scenario.)
Any idea what can cause the issue?
Thanks,
Mickael
I'm not using any hook – I just need CDRs to be generated when a dialog timeout occurs; and currently, no CDRs are written in such cases.
From: sr-users [mailto:sr-users-bounces@lists.sip-router.org] On Behalf Of Alex Balashov Sent: Wednesday, April 15, 2015 5:32 PM To: sr-users@lists.sip-router.org Subject: Re: [SR-Users] No CDR is written when dialog timeouts
Why are you using the dialog start/end hooks? They work well for standard scenarios clearly understood by the dialog module. For nonstandard scenarios, use the TM local-request route to catch and log endogenously generated BYEs.
-- Alex Balashov | Principal | Evariste Systems LLC 303 Perimeter Center North, Suite 300 Atlanta, GA 30346 United States
Tel: +1-800-250-5920 (toll-free) / +1-678-954-0671 (direct) Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
Sent from my BlackBerry.
From: Mickael Marrache
Sent: Wednesday, April 15, 2015 10:28
To: sr-users@lists.sip-router.org
Reply To: Kamailio (SER) - Users Mailing List
Subject: Re: [SR-Users] No CDR is written when dialog timeouts
I'm looking at the dlg_ontimeout function [dlg_handlers.c:1369] and I understand the code, the DLGCB_EXPIRED callbacks are not called when the send_bye parameter is set to 1.
I'm looking at the block 1399-1408.
From: Mickael Marrache [mailto:mickaelmarrache@gmail.com] Sent: Wednesday, April 15, 2015 3:53 PM To: sr-users@lists.sip-router.org Subject: RE: No CDR is written when dialog timeouts
I also confirm the cdr_on_create() [acc_cdr.c:718] function is called since I can see the debug statement "dialog '%p' created!".
From: Mickael Marrache [mailto:mickaelmarrache@gmail.com] Sent: Wednesday, April 15, 2015 3:48 PM To: sr-users@lists.sip-router.org Subject: No CDR is written when dialog timeouts
Hi,
I'm testing the dialog timeout scenario and I see that no CDR is written.
This is my configuration:
modparam("acc", "cdr_enable", 1)
modparam("acc", "cdr_expired_dlg_enable", 1)
modparam("acc", "cdr_start_on_confirmed", 1)
modparam("acc", "cdr_log_enable", 0)
modparam("acc", "cdr_on_failed", 0)
I can confirm the cdr_on_expired() [acc_cdr.c:684] function is not called since I don't see the debug statement "dialog '%p' expired!\n".
(I precise that CDR generation works fine for regular hangup scenario.)
Any idea what can cause the issue?
Thanks,
Mickael
Looks like the topic diverged in side discussion, irrelevant to the issue.
The report was related to the fact that the dialog+acc is not recording the CDRs when sending the BYE on timeout. That is obviously an issue because there is dedicated functionality for this case. I am not the original developer of the feature, but it appears that it covered the case when dialog was not configured to send the BYE on timeout, just silenty discard the associated structure. So this has to be fixed. It is no relation with what proxy can do or not, sending BYE at the end of the dialog is not breaking anything in the existing dialog, it just terminates it on both sides.
Cheers, Daniel
On 15/04/15 16:45, Alex Balashov wrote:
Hook, route, whatever you want to call it. The bottom line is that you cannot rely on the proxy's dialog layer, already a tenuous concept inasmuch as it's implemented strictly on top of transaction state specifically and derived solely from SIP signalling generally, to expose to you all conceivable outcomes, including outcomes that do not conform to a standard transition of dialog states.
The dialog module is just a tool. It cannot replace the fundamentals.
-- Alex Balashov | Principal | Evariste Systems LLC 303 Perimeter Center North, Suite 300 Atlanta, GA 30346 United States
Tel: +1-800-250-5920 (toll-free) / +1-678-954-0671 (direct) Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
Sent from my BlackBerry.
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Actually there is nothing special to rely on what so ever prerogatives in this case. Writing cdrs based on dialog module was added by 1&1 long time ago (iirc) and they have couple of millions of subscribers and tons of calls, so this approach might have been better for them from various reasons. In big telcos, cdrs are aggregated from many sources, and a lot of nodes collect CDRs just for statistics or monitoring.
The fact is that the dialog can be discarded on timeout without sending bye, being the default behaviour -- in this case the cdr is produced. When enabling to send bye, the cdr is not produced -- it doesn't seem to be anything more clear that this is a bug.
I rely on transaction accounting (acc alone), finding it more flexible to store various events, even during the call. I guess most of the people do the same in a proxy. On the other hand, dialog module adds a call-stateful proxy layer, which I use extensively for limiting active call as well as terminating on timeout with byes. But like you, I write the stop event for cdrs from tm local request event.
Cheers, Daniel
On 15/04/15 17:25, Alex Balashov wrote:
Fair enough. It is your prerogative to take a definitive stance on the issue. I was just voicing personal view that truly complete accounting can only be done from SIP message-oriented perspective in software that does not formally have a dialog layer.
-- Alex Balashov | Principal | Evariste Systems LLC 303 Perimeter Center North, Suite 300 Atlanta, GA 30346 United States
Tel: +1-800-250-5920 (toll-free) / +1-678-954-0671 (direct) Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
Sent from my BlackBerry. *From: *Daniel-Constantin Mierla *Sent: *Wednesday, April 15, 2015 10:59 *To: *Kamailio (SER) - Users Mailing List *Reply To: *miconda@gmail.com *Subject: *Re: [SR-Users] No CDR is written when dialog timeouts
Looks like the topic diverged in side discussion, irrelevant to the issue.
The report was related to the fact that the dialog+acc is not recording the CDRs when sending the BYE on timeout. That is obviously an issue because there is dedicated functionality for this case. I am not the original developer of the feature, but it appears that it covered the case when dialog was not configured to send the BYE on timeout, just silenty discard the associated structure. So this has to be fixed. It is no relation with what proxy can do or not, sending BYE at the end of the dialog is not breaking anything in the existing dialog, it just terminates it on both sides.
Cheers, Daniel
On 15/04/15 16:45, Alex Balashov wrote:
Hook, route, whatever you want to call it. The bottom line is that you cannot rely on the proxy's dialog layer, already a tenuous concept inasmuch as it's implemented strictly on top of transaction state specifically and derived solely from SIP signalling generally, to expose to you all conceivable outcomes, including outcomes that do not conform to a standard transition of dialog states.
The dialog module is just a tool. It cannot replace the fundamentals.
-- Alex Balashov | Principal | Evariste Systems LLC 303 Perimeter Center North, Suite 300 Atlanta, GA 30346 United States
Tel: +1-800-250-5920 (toll-free) / +1-678-954-0671 (direct) Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
Sent from my BlackBerry.
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierla http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda Kamailio World Conference, May 27-29, 2015 Berlin, Germany - http://www.kamailioworld.com
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
On 15/04/15 16:27, Mickael Marrache wrote:
I'm looking at the dlg_ontimeout function [dlg_handlers.c:1369] and I understand the code, the DLGCB_EXPIRED callbacks are not called when the send_bye parameter is set to 1.
I'm looking at the block 1399-1408.
Indeed, looking quickly at that part of the code, the callback is not executed when sending BYE requests at dialog timeout. It needs to be fixed, if none picks it up, I will look at it with the first chance.
Cheers, Daniel
*From:*Mickael Marrache [mailto:mickaelmarrache@gmail.com] *Sent:* Wednesday, April 15, 2015 3:53 PM *To:* sr-users@lists.sip-router.org *Subject:* RE: No CDR is written when dialog timeouts
I also confirm the cdr_on_create() [acc_cdr.c:718] function is called since I can see the debug statement "dialog '%p' created!".
*From:*Mickael Marrache [mailto:mickaelmarrache@gmail.com] *Sent:* Wednesday, April 15, 2015 3:48 PM *To:* sr-users@lists.sip-router.org mailto:sr-users@lists.sip-router.org *Subject:* No CDR is written when dialog timeouts
Hi,
I'm testing the dialog timeout scenario and I see that no CDR is written.
This is my configuration:
modparam("acc", "cdr_enable", 1)
modparam("acc", "cdr_expired_dlg_enable", 1)
modparam("acc", "cdr_start_on_confirmed", 1)
modparam("acc", "cdr_log_enable", 0)
modparam("acc", "cdr_on_failed", 0)
I can confirm the cdr_on_expired() [acc_cdr.c:684] function is not called since I don't see the debug statement "dialog '%p' expired!\n".
(I precise that CDR generation works fine for regular hangup scenario.)
Any idea what can cause the issue?
Thanks,
Mickael
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
I pushed two patches, as it required a small adjustment to acc module for this case -- they are now in master, affecting acc and dialog modules. Testing and feedback whether it works or not is very appreciated.
I went a different path, considering the case when the bye is coming from the wire, two callbacks were executed DLGCB_TERMINATED (when bye was processed) and DLGCB_TERMINATED_CONFIRMED (when it was a reply to the bye). Same is done now when the bye is generate locally, so it should match better on the pattern for callbacks.
The callback for DLGCB_EXPIRED is for the case when no bye was involved and seems better to leave it as it is. The flag you just added can be used in the callbacks to see if it was a dialog timeout or not (as well as looking if there is a sip request passwd to the callback function as parameter).
Thanks for troubleshooting so far and pointing in the code, helped to identify the issue faster and fix it quickly.
Cheers, Daniel
On 15/04/15 17:04, Daniel-Constantin Mierla wrote:
On 15/04/15 16:27, Mickael Marrache wrote:
I'm looking at the dlg_ontimeout function [dlg_handlers.c:1369] and I understand the code, the DLGCB_EXPIRED callbacks are not called when the send_bye parameter is set to 1.
I'm looking at the block 1399-1408.
Indeed, looking quickly at that part of the code, the callback is not executed when sending BYE requests at dialog timeout. It needs to be fixed, if none picks it up, I will look at it with the first chance.
Cheers, Daniel
*From:*Mickael Marrache [mailto:mickaelmarrache@gmail.com] *Sent:* Wednesday, April 15, 2015 3:53 PM *To:* sr-users@lists.sip-router.org *Subject:* RE: No CDR is written when dialog timeouts
I also confirm the cdr_on_create() [acc_cdr.c:718] function is called since I can see the debug statement "dialog '%p' created!".
*From:*Mickael Marrache [mailto:mickaelmarrache@gmail.com] *Sent:* Wednesday, April 15, 2015 3:48 PM *To:* sr-users@lists.sip-router.org mailto:sr-users@lists.sip-router.org *Subject:* No CDR is written when dialog timeouts
Hi,
I'm testing the dialog timeout scenario and I see that no CDR is written.
This is my configuration:
modparam("acc", "cdr_enable", 1)
modparam("acc", "cdr_expired_dlg_enable", 1)
modparam("acc", "cdr_start_on_confirmed", 1)
modparam("acc", "cdr_log_enable", 0)
modparam("acc", "cdr_on_failed", 0)
I can confirm the cdr_on_expired() [acc_cdr.c:684] function is not called since I don't see the debug statement "dialog '%p' expired!\n".
(I precise that CDR generation works fine for regular hangup scenario.)
Any idea what can cause the issue?
Thanks,
Mickael
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierla http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda Kamailio World Conference, May 27-29, 2015 Berlin, Germany - http://www.kamailioworld.com