aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/app_dial.c7
-rw-r--r--include/asterisk/cdr.h12
2 files changed, 17 insertions, 2 deletions
diff --git a/apps/app_dial.c b/apps/app_dial.c
index 89f0856dd..f8b5e0298 100644
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -751,6 +751,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
/* Got hung up */
*to = -1;
strcpy(pa->status, "CANCEL");
+ ast_cdr_noanswer(in->cdr);
if (f)
ast_frfree(f);
return NULL;
@@ -764,6 +765,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "User hit %c to disconnect call.\n", f->subclass);
*to=0;
+ ast_cdr_noanswer(in->cdr);
*result = f->subclass;
strcpy(pa->status, "CANCEL");
ast_frfree(f);
@@ -777,6 +779,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
ast_verbose(VERBOSE_PREFIX_3 "User hit %c to disconnect call.\n", f->subclass);
*to=0;
strcpy(pa->status, "CANCEL");
+ ast_cdr_noanswer(in->cdr);
ast_frfree(f);
return NULL;
}
@@ -804,6 +807,10 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
}
if (!*to && (option_verbose > 2))
ast_verbose(VERBOSE_PREFIX_3 "Nobody picked up in %d ms\n", orig);
+ if (!*to || ast_check_hangup(in)) {
+ ast_cdr_noanswer(in->cdr);
+ }
+
}
return peer;
diff --git a/include/asterisk/cdr.h b/include/asterisk/cdr.h
index 7dd946abf..df4860882 100644
--- a/include/asterisk/cdr.h
+++ b/include/asterisk/cdr.h
@@ -30,9 +30,10 @@
#define AST_CDR_FLAG_CHILD (1 << 3)
#define AST_CDR_FLAG_POST_DISABLED (1 << 4)
-#define AST_CDR_NOANSWER (1 << 0)
+#define AST_CDR_NULL 0
+#define AST_CDR_FAILED (1 << 0)
#define AST_CDR_BUSY (1 << 1)
-#define AST_CDR_FAILED (1 << 2)
+#define AST_CDR_NOANSWER (1 << 2)
#define AST_CDR_ANSWERED (1 << 3)
/*! AMA Flags */
@@ -177,6 +178,13 @@ void ast_cdr_start(struct ast_cdr *cdr);
*/
void ast_cdr_answer(struct ast_cdr *cdr);
+/*! A call wasn't answered */
+/*!
+ * \param cdr the cdr you wish to associate with the call
+ * Marks the channel disposition as "NO ANSWER"
+ */
+extern void ast_cdr_noanswer(struct ast_cdr *cdr);
+
/*! Busy a call */
/*!
* \param cdr the cdr you wish to associate with the call