summaryrefslogtreecommitdiff
path: root/channels/chan_local.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2010-04-03 02:12:33 +0000
committerRichard Mudgett <rmudgett@digium.com>2010-04-03 02:12:33 +0000
commita5a0a5f867a45eef2e7ccb6c64f3a4f2e8c3a7ba (patch)
treed5314391644adec2c19d0dc0b36644a20a12c759 /channels/chan_local.c
parent5333a48b17e3f0f9cb12a7cb23da9bc509539dd7 (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.c20
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;