aboutsummaryrefslogtreecommitdiffstats
path: root/main/cdr.c
diff options
context:
space:
mode:
authormurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2007-11-27 06:47:08 +0000
committermurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2007-11-27 06:47:08 +0000
commit5aff21b945b2ae3947cb5b64d6dba19dadec5a8e (patch)
treea89e4cbbf7f049372549c2a5b83c4900f1498ea1 /main/cdr.c
parent3d682ee9e4593f8b65f938239b8da23c5da96b27 (diff)
Merged revisions 89622 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r89622 | murf | 2007-11-26 23:24:02 -0700 (Mon, 26 Nov 2007) | 1 line closes issue #11379; OK, this is an attempt to make both sides happy. To the cdr.conf file, I added the option 'unanswered', which defaults to 'no'. In this mode, you will see a cdr for a call, whether it was answered or not. The disposition will be NO ANSWER or ANSWERED, as appropriate. The src is as you'd expect, the destination channel will be one of the channels from the Dial() call, usually the last in the list if more than one chan was specified. With unanswered set to 'yes', you will still see this cdr entry in both cases. But in the case where the dial timed out, you will also see a cdr for each line attempted, marked NO ANSWER, with no destination channel name. The new option defaults to 'no', so you don't see the pesky extra cdr's by default, and you will not see the irritating 'not posted' messages. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89623 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/cdr.c')
-rw-r--r--main/cdr.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/main/cdr.c b/main/cdr.c
index 5578fe20a..c828ec858 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -83,6 +83,7 @@ static pthread_t cdr_thread = AST_PTHREADT_NULL;
#define BATCH_SAFE_SHUTDOWN_DEFAULT 1
static int enabled; /*! Is the CDR subsystem enabled ? */
+static int unanswered;
static int batchmode;
static int batchsize;
static int batchtime;
@@ -100,6 +101,11 @@ int check_cdr_enabled()
return enabled;
}
+int ast_cdr_log_unanswered(void)
+{
+ return unanswered;
+}
+
/*! Register a CDR driver. Each registered CDR driver generates a CDR
\return 0 on success, -1 on failure
*/
@@ -976,8 +982,6 @@ static void post_cdr(struct ast_cdr *cdr)
struct ast_cdr_beitem *i;
for ( ; cdr ; cdr = cdr->next) {
- if (cdr->disposition < AST_CDR_ANSWERED && (ast_strlen_zero(cdr->channel) || ast_strlen_zero(cdr->dstchannel)))
- continue; /* people don't want to see unanswered single-channel events */
chan = S_OR(cdr->channel, "<unknown>");
check_post(cdr);
if (ast_tvzero(cdr->end))
@@ -1241,6 +1245,7 @@ static char *handle_cli_status(struct ast_cli_entry *e, int cmd, struct ast_cli_
ast_cli(a->fd, "CDR logging: %s\n", enabled ? "enabled" : "disabled");
ast_cli(a->fd, "CDR mode: %s\n", batchmode ? "batch" : "simple");
if (enabled) {
+ ast_cli(a->fd, "CDR output unanswered calls: %s\n", unanswered ? "yes" : "no");
if (batchmode) {
if (batch)
cnt = batch->size;
@@ -1291,6 +1296,7 @@ static int do_reload(int reload)
{
struct ast_config *config;
const char *enabled_value;
+ const char *unanswered_value;
const char *batched_value;
const char *scheduleronly_value;
const char *batchsafeshutdown_value;
@@ -1326,6 +1332,9 @@ static int do_reload(int reload)
if ((enabled_value = ast_variable_retrieve(config, "general", "enable"))) {
enabled = ast_true(enabled_value);
}
+ if ((unanswered_value = ast_variable_retrieve(config, "general", "unanswered"))) {
+ unanswered = ast_true(unanswered_value);
+ }
if ((batched_value = ast_variable_retrieve(config, "general", "batch"))) {
batchmode = ast_true(batched_value);
}