aboutsummaryrefslogtreecommitdiffstats
path: root/apps/app_dial.c
diff options
context:
space:
mode:
authorrizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b>2006-11-03 23:24:21 +0000
committerrizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b>2006-11-03 23:24:21 +0000
commit859fd8cdf9ae55393fb6f6cced06eb77ccb1cde9 (patch)
treeea7459d0f99f66c9d15852ae54dbb7e3980735fa /apps/app_dial.c
parent2bdbca420a9c72a8502507f17d8ed67cb62d54b4 (diff)
another small set of simplifications
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@47177 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps/app_dial.c')
-rw-r--r--apps/app_dial.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/apps/app_dial.c b/apps/app_dial.c
index 58065dce1..5e68156e7 100644
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -540,26 +540,25 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct dial_l
ast_clear_flag(o, DIAL_STILLGOING);
handle_cause(cause, &num);
} else {
- ast_rtp_make_compatible(c, in, single);
- if (c->cid.cid_num)
- free(c->cid.cid_num);
- c->cid.cid_num = NULL;
- if (c->cid.cid_name)
- free(c->cid.cid_name);
- c->cid.cid_name = NULL;
+ char *new_cid_num, *new_cid_name;
+ struct ast_channel *src;
+ ast_rtp_make_compatible(c, in, single);
if (ast_test_flag(o, OPT_FORCECLID)) {
- c->cid.cid_num = ast_strdup(S_OR(in->macroexten, in->exten));
- ast_string_field_set(c, accountcode, winner->accountcode);
- c->cdrflags = winner->cdrflags;
+ new_cid_num = ast_strdup(S_OR(in->macroexten, in->exten));
+ new_cid_name = NULL; /* XXX no name ? */
+ src = winner;
} else {
- c->cid.cid_num = ast_strdup(in->cid.cid_num);
- c->cid.cid_name = ast_strdup(in->cid.cid_name);
- ast_string_field_set(c, accountcode, in->accountcode);
- c->cdrflags = in->cdrflags;
+ new_cid_num = ast_strdup(in->cid.cid_num);
+ new_cid_name = ast_strdup(in->cid.cid_name);
+ src = in;
}
+ ast_string_field_set(c, accountcode, src->accountcode);
+ c->cdrflags = src->cdrflags;
+ S_REPLACE(c->cid.cid_num, new_cid_num);
+ S_REPLACE(c->cid.cid_name, new_cid_name);
- if (in->cid.cid_ani) {
+ if (in->cid.cid_ani) { /* XXX or maybe unconditional ? */
S_REPLACE(c->cid.cid_ani, ast_strdup(in->cid.cid_ani));
}
S_REPLACE(c->cid.cid_rdnis, ast_strdup(S_OR(in->macroexten, in->exten)));