diff options
author | rizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-03 23:24:21 +0000 |
---|---|---|
committer | rizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-03 23:24:21 +0000 |
commit | 859fd8cdf9ae55393fb6f6cced06eb77ccb1cde9 (patch) | |
tree | ea7459d0f99f66c9d15852ae54dbb7e3980735fa /apps/app_dial.c | |
parent | 2bdbca420a9c72a8502507f17d8ed67cb62d54b4 (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.c | 29 |
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))); |