diff options
author | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-08-05 05:26:29 +0000 |
---|---|---|
committer | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-08-05 05:26:29 +0000 |
commit | a0ab5e9b80c9c1ea7e41e5a82705ff72da5b072f (patch) | |
tree | 1df8cab3abb122ebca5fcfb28de5552ae33c8802 /channels/chan_h323.c | |
parent | 1bdd7371e035513f76f841bbe160b6acba4dab1d (diff) |
Merged revisions 38903-38904 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r38903 | russell | 2006-08-05 01:07:39 -0400 (Sat, 05 Aug 2006) | 2 lines
suppress a compiler warning about the usage of a potentially uninitialized variable
........
r38904 | russell | 2006-08-05 01:08:50 -0400 (Sat, 05 Aug 2006) | 10 lines
Fix an issue that would cause a NewCallerID manager event to be generated
before the channel's NewChannel event. This was due to a somewhat recent
change that included using ast_set_callerid() where it wasn't before. This
function should not be used in the channel driver "new" functions.
(issue #7654, fixed by me)
Also, fix a couple minor bugs in usecount handling. chan_iax2 could have
increased the usecount but then returned an error. The place where chan_sip
increased the usecount did not call ast_update_usecount()
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@38905 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_h323.c')
-rw-r--r-- | channels/chan_h323.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/channels/chan_h323.c b/channels/chan_h323.c index b5e3b18d0..5a4a400b2 100644 --- a/channels/chan_h323.c +++ b/channels/chan_h323.c @@ -796,18 +796,19 @@ static struct ast_channel *__oh323_new(struct oh323_pvt *pvt, int state, const c if (pvt->amaflags) { ch->amaflags = pvt->amaflags; } - /* - * If cid_num and cd.call_source_e164 are both null, then - * ast_set_callerid will do the right thing and leave the - * cid_num and cid_ani for the channel alone. - */ - ast_set_callerid(ch, - !ast_strlen_zero(pvt->cid_num) ? pvt->cid_num : pvt->cd.call_source_e164, - !ast_strlen_zero(pvt->cid_name) ? pvt->cid_name : pvt->cd.call_source_name, - !ast_strlen_zero(pvt->cid_num) ? pvt->cid_num : pvt->cd.call_source_e164); - if (!ast_strlen_zero(pvt->rdnis)) { - ch->cid.cid_rdnis = strdup(pvt->rdnis); + + /* Don't use ast_set_callerid() here because it will + * generate a NewCallerID event before the NewChannel event */ + if (!ast_strlen_zero(pvt->cid_num)) { + ch->cid.cid_num = ast_strdup(pvt->cid_num); + ch->cid.cid_ani = ast_strdup(pvt->cid_num); + } else { + ch->cid.cid_num = ast_strdup(pvt->cd.call_source_e164); + ch->cid.cid_ani = ast_strdup(pvt->cd.call_source_e164); } + ch->cid.cid_name = ast_strdup(pvt->cid_name); + ch->cid.cid_rdnis = ast_strdup(pvt->rdnis); + if (!ast_strlen_zero(pvt->exten) && strcmp(pvt->exten, "s")) { ch->cid.cid_dnid = strdup(pvt->exten); } |