diff --git a/channels/chan_local.c b/channels/chan_local.c index 2277c6a0c3..ff462ad4be 100644 --- a/channels/chan_local.c +++ b/channels/chan_local.c @@ -582,10 +582,22 @@ static struct ast_channel *local_new(struct local_pvt *p, int state) { struct ast_channel *tmp = NULL, *tmp2 = NULL; int randnum = ast_random() & 0xffff, fmt = 0; + const char *t; + int ama; /* Allocate two new Asterisk channels */ - if (!(tmp = ast_channel_alloc(1, state, 0, 0, "", p->exten, p->context, 0, "Local/%s@%s-%04x,1", p->exten, p->context, randnum)) - || !(tmp2 = ast_channel_alloc(1, AST_STATE_RING, 0, 0, "", p->exten, p->context, 0, "Local/%s@%s-%04x,2", p->exten, p->context, randnum))) { + /* safe accountcode */ + if (p->owner && p->owner->accountcode) + t = p->owner->accountcode; + else + t = ""; + + if (p->owner) + ama = p->owner->amaflags; + else + ama = 0; + if (!(tmp = ast_channel_alloc(1, state, 0, 0, t, p->exten, p->context, ama, "Local/%s@%s-%04x,1", p->exten, p->context, randnum)) + || !(tmp2 = ast_channel_alloc(1, AST_STATE_RING, 0, 0, t, p->exten, p->context, ama, "Local/%s@%s-%04x,2", p->exten, p->context, randnum))) { if (tmp) ast_channel_free(tmp); if (tmp2) diff --git a/main/cdr.c b/main/cdr.c index 9b62760c1f..44081bf1f5 100644 --- a/main/cdr.c +++ b/main/cdr.c @@ -421,15 +421,6 @@ static void check_post(struct ast_cdr *cdr) ast_log(LOG_NOTICE, "CDR on channel '%s' already posted\n", S_OR(cdr->channel, "")); } -/*! \brief print a warning if cdr already started */ -static void check_start(struct ast_cdr *cdr) -{ - if (!cdr) - return; - if (!ast_tvzero(cdr->start)) - ast_log(LOG_NOTICE, "CDR on channel '%s' already started\n", S_OR(cdr->channel, "")); -} - void ast_cdr_free(struct ast_cdr *cdr) { @@ -629,7 +620,6 @@ void ast_cdr_start(struct ast_cdr *cdr) if (!ast_test_flag(cdr, AST_CDR_FLAG_LOCKED)) { chan = S_OR(cdr->channel, ""); check_post(cdr); - check_start(cdr); cdr->start = ast_tvnow(); } } diff --git a/main/pbx.c b/main/pbx.c index 068b638e42..56e291175a 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -4972,20 +4972,6 @@ int ast_pbx_outgoing_exten(const char *type, int format, void *data, int timeout ast_channel_lock(chan); } if (chan) { - if (chan->cdr) { /* check if the channel already has a cdr record, if not give it one */ - ast_log(LOG_WARNING, "%s already has a call record??\n", chan->name); - } else { - chan->cdr = ast_cdr_alloc(); /* allocate a cdr for the channel */ - if (!chan->cdr) { - /* allocation of the cdr failed */ - free(chan->pbx); - res = -1; - goto outgoing_exten_cleanup; - } - /* allocation of the cdr was successful */ - ast_cdr_init(chan->cdr, chan); /* initilize our channel's cdr */ - ast_cdr_start(chan->cdr); - } if (chan->_state == AST_STATE_UP) { res = 0; if (option_verbose > 3) @@ -5016,7 +5002,7 @@ int ast_pbx_outgoing_exten(const char *type, int format, void *data, int timeout if (option_verbose > 3) ast_verbose(VERBOSE_PREFIX_4 "Channel %s was never answered.\n", chan->name); - if(chan->cdr) { /* update the cdr */ + if (chan->cdr) { /* update the cdr */ /* here we update the status of the call, which sould be busy. * if that fails then we set the status to failed */ if (ast_cdr_disposition(chan->cdr, chan->hangupcause))