diff options
-rw-r--r-- | apps/app_dial.c | 7 | ||||
-rw-r--r-- | include/asterisk/cdr.h | 12 |
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 |