diff options
author | Richard Mudgett <rmudgett@digium.com> | 2010-04-03 02:12:33 +0000 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2010-04-03 02:12:33 +0000 |
commit | a5a0a5f867a45eef2e7ccb6c64f3a4f2e8c3a7ba (patch) | |
tree | d5314391644adec2c19d0dc0b36644a20a12c759 /channels/chan_local.c | |
parent | 5333a48b17e3f0f9cb12a7cb23da9bc509539dd7 (diff) |
Consolidate ast_channel.cid.cid_rdnis into ast_channel.redirecting.from.number.
SWP-1229
ABE-2161
* Ensure chan_local.c:local_call() will not leak cid.cid_dnid when
copying.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@256104 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_local.c')
-rw-r--r-- | channels/chan_local.c | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/channels/chan_local.c b/channels/chan_local.c index b2c7b9ed4..5e522e797 100644 --- a/channels/chan_local.c +++ b/channels/chan_local.c @@ -574,21 +574,15 @@ start_over: * All these failure points just return -1. The individual strings will * be cleared when we destroy the channel. */ - if (p->owner->cid.cid_rdnis) { - if (!(p->chan->cid.cid_rdnis = ast_strdup(p->owner->cid.cid_rdnis))) { - ast_mutex_unlock(&p->lock); - ast_channel_unlock(p->chan); - return -1; - } - } ast_party_redirecting_copy(&p->chan->redirecting, &p->owner->redirecting); - if (p->owner->cid.cid_dnid) { - if (!(p->chan->cid.cid_dnid = ast_strdup(p->owner->cid.cid_dnid))) { - ast_mutex_unlock(&p->lock); - ast_channel_unlock(p->chan); - return -1; - } + ast_free(p->chan->cid.cid_dnid); + p->chan->cid.cid_dnid = ast_strdup(p->owner->cid.cid_dnid); + if (!p->chan->cid.cid_dnid && p->owner->cid.cid_dnid) { + /* Allocation failure */ + ast_mutex_unlock(&p->lock); + ast_channel_unlock(p->chan); + return -1; } p->chan->cid.cid_tns = p->owner->cid.cid_tns; |