diff --git a/cdr.c b/cdr.c index 6838d619c9..8f9c4da0af 100644 --- a/cdr.c +++ b/cdr.c @@ -775,16 +775,18 @@ int ast_cdr_update(struct ast_channel *c) /* Copy account code et-al */ ast_copy_string(cdr->accountcode, c->accountcode, sizeof(cdr->accountcode)); - /* Destination information */ - ast_copy_string(cdr->dst, (ast_strlen_zero(c->macroexten)) ? c->exten : c->macroexten, sizeof(cdr->dst)); - ast_copy_string(cdr->dcontext, (ast_strlen_zero(c->macrocontext)) ? c->context : c->macrocontext, sizeof(cdr->dcontext)); + if (!ast_check_hangup(c)) { + /* Destination information */ /* XXX privilege macro* ? */ + ast_copy_string(cdr->dst, (ast_strlen_zero(c->macroexten)) ? c->exten : c->macroexten, sizeof(cdr->dst)); + ast_copy_string(cdr->dcontext, (ast_strlen_zero(c->macrocontext)) ? c->context : c->macrocontext, sizeof(cdr->dcontext)); + } } cdr = cdr->next; } return 0; } - + int ast_cdr_amaflags2int(const char *flag) { if (!strcasecmp(flag, "default")) diff --git a/pbx.c b/pbx.c index 6b068214ce..2b2edc2110 100644 --- a/pbx.c +++ b/pbx.c @@ -562,7 +562,7 @@ int pbx_exec(struct ast_channel *c, /*!< Channel */ int (*execute)(struct ast_channel *chan, void *data) = app->execute; if (newstack) { - if (c->cdr) + if (c->cdr && !ast_check_hangup(c)) ast_cdr_setapp(c->cdr, app->name, data); /* save channel values */