From: Automerge script Date: Wed, 30 Aug 2006 19:03:07 +0000 (+0000) Subject: automerge commit X-Git-Tag: 1.2.12-netsec~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aada1f902bfab0c71a7d12b121650c1f1f160c60;p=thirdparty%2Fasterisk.git automerge commit git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@41432 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_features.c b/channels/chan_features.c index 38565ee41c..5f680130b7 100644 --- a/channels/chan_features.c +++ b/channels/chan_features.c @@ -328,14 +328,14 @@ static int features_call(struct ast_channel *ast, char *dest, int timeout) ast_mutex_lock(&p->lock); x = indexof(p, ast, 0); if (!x && p->subchan) { - ast_set_callerid(p->subchan, - p->owner->cid.cid_num, p->owner->cid.cid_name, - p->owner->cid.cid_ani ? p->owner->cid.cid_ani : p->owner->cid.cid_num); - - if (p->owner->cid.cid_rdnis) - p->subchan->cid.cid_rdnis = strdup(p->owner->cid.cid_rdnis); - else - p->subchan->cid.cid_rdnis = NULL; + p->subchan->cid.cid_name = p->owner->cid.cid_name ? + strdup(p->owner->cid.cid_name) : NULL; + p->subchan->cid.cid_num = p->owner->cid.cid_num ? + strdup(p->owner->cid.cid_num) : NULL; + p->subchan->cid.cid_ani = p->owner->cid.cid_ani ? + strdup(p->owner->cid.cid_ani) : NULL; + p->subchan->cid.cid_rdnis = p->owner->cid.cid_rdnis ? + strdup(p->owner->cid.cid_rdnis) : NULL; p->subchan->cid.cid_pres = p->owner->cid.cid_pres; strncpy(p->subchan->language, p->owner->language, sizeof(p->subchan->language) - 1); diff --git a/channels/chan_h323.c b/channels/chan_h323.c index 814c546f9e..b86d684c87 100644 --- a/channels/chan_h323.c +++ b/channels/chan_h323.c @@ -770,13 +770,10 @@ static struct ast_channel *__oh323_new(struct oh323_pvt *pvt, int state, const c ch->amaflags = pvt->amaflags; } - if (!ast_strlen_zero(pvt->cid_num)) { + if (!ast_strlen_zero(pvt->cid_num)) ch->cid.cid_num = strdup(pvt->cid_num); - ch->cid.cid_ani = strdup(pvt->cid_num); - } else if (!ast_strlen_zero(pvt->cd.call_source_e164)) { + else if (!ast_strlen_zero(pvt->cd.call_source_e164)) ch->cid.cid_num = strdup(pvt->cd.call_source_e164); - ch->cid.cid_ani = strdup(pvt->cd.call_source_e164); - } if (!ast_strlen_zero(pvt->cid_name)) ch->cid.cid_name = strdup(pvt->cid_name); diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 61fc2ca363..f57853ae0e 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -3448,8 +3448,6 @@ static struct ast_channel *ast_iax2_new(int callno, int state, int capability) tmp->cid.cid_name = strdup(i->cid_name); if (!ast_strlen_zero(i->ani)) tmp->cid.cid_ani = strdup(i->ani); - else if (!ast_strlen_zero(i->cid_num)) - tmp->cid.cid_ani = strdup(i->cid_num); tmp->cid.cid_pres = i->calling_pres; tmp->cid.cid_ton = i->calling_ton; tmp->cid.cid_tns = i->calling_tns; diff --git a/channels/chan_local.c b/channels/chan_local.c index 0690059027..a28964167c 100644 --- a/channels/chan_local.c +++ b/channels/chan_local.c @@ -339,7 +339,7 @@ static int local_call(struct ast_channel *ast, char *dest, int timeout) ast_set_callerid(p->chan, p->owner->cid.cid_num, p->owner->cid.cid_name, - p->owner->cid.cid_ani ? p->chan->cid.cid_ani : p->owner->cid.cid_num); + p->owner->cid.cid_ani); if (p->owner->cid.cid_rdnis) p->chan->cid.cid_rdnis = strdup(p->owner->cid.cid_rdnis); diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c index cb3c3d7ced..14b1874260 100644 --- a/channels/chan_mgcp.c +++ b/channels/chan_mgcp.c @@ -1429,10 +1429,8 @@ static struct ast_channel *mgcp_new(struct mgcp_subchannel *sub, int state) strncpy(tmp->context, i->context, sizeof(tmp->context)-1); strncpy(tmp->exten, i->exten, sizeof(tmp->exten)-1); - if (!ast_strlen_zero(i->cid_num)) { + if (!ast_strlen_zero(i->cid_num)) tmp->cid.cid_num = strdup(i->cid_num); - tmp->cid.cid_ani = strdup(i->cid_num); - } if (!ast_strlen_zero(i->cid_name)) tmp->cid.cid_name = strdup(i->cid_name); @@ -2630,7 +2628,7 @@ static void *mgcp_ss(void *data) ast_set_callerid(chan, p->hidecallerid ? "" : p->cid_num, p->hidecallerid ? "" : p->cid_name, - chan->cid.cid_ani ? NULL : p->cid_num); + p->cid_num); ast_setstate(chan, AST_STATE_RING); /*zt_enable_ec(p);*/ if (p->dtmfmode & MGCP_DTMF_HYBRID) { diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index 5b322f6bf1..c6dc759208 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -2706,10 +2706,8 @@ static struct ast_channel *misdn_new(struct chan_list *chlist, int state, char ast_callerid_parse(callerid, &cid_name, &cid_num); - if (!ast_strlen_zero(cid_num)) { + if (!ast_strlen_zero(cid_num)) tmp->cid.cid_num = strdup(cid_num); - tmp->cid.cid_ani = strdup(cid_num); - } if (!ast_strlen_zero(cid_name)) tmp->cid.cid_name = strdup(cid_name); } diff --git a/channels/chan_phone.c b/channels/chan_phone.c index 18fc8eaf8c..65257d5079 100644 --- a/channels/chan_phone.c +++ b/channels/chan_phone.c @@ -826,10 +826,8 @@ static struct ast_channel *phone_new(struct phone_pvt *i, int state, char *conte if (!ast_strlen_zero(i->language)) strncpy(tmp->language, i->language, sizeof(tmp->language)-1); - if (!ast_strlen_zero(i->cid_num)) { + if (!ast_strlen_zero(i->cid_num)) tmp->cid.cid_num = strdup(i->cid_num); - tmp->cid.cid_ani = strdup(i->cid_num); - } if (!ast_strlen_zero(i->cid_name)) tmp->cid.cid_name = strdup(i->cid_name); diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 37fd1746a0..41948a160b 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -2331,6 +2331,7 @@ static int hangup_sip2cause(int cause) switch(cause) { case 603: /* Declined */ case 403: /* Not found */ + case 487: /* Call cancelled */ return AST_CAUSE_CALL_REJECTED; case 404: /* Not found */ return AST_CAUSE_UNALLOCATED; @@ -2862,10 +2863,8 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, char *title) ast_copy_string(tmp->context, i->context, sizeof(tmp->context)); ast_copy_string(tmp->exten, i->exten, sizeof(tmp->exten)); - if (!ast_strlen_zero(i->cid_num)) { + if (!ast_strlen_zero(i->cid_num)) tmp->cid.cid_num = strdup(i->cid_num); - tmp->cid.cid_ani = strdup(i->cid_num); - } if (!ast_strlen_zero(i->cid_name)) tmp->cid.cid_name = strdup(i->cid_name); if (!ast_strlen_zero(i->rdnis)) @@ -10172,6 +10171,8 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_ break; case 487: /* channel now destroyed - dec the inUse counter */ + if (owner) + ast_queue_hangup(p->owner); update_call_counter(p, DEC_CALL_LIMIT); break; case 482: /* SIP is incapable of performing a hairpin call, which diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index e4ffe81657..1dc6c8c2af 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -1746,7 +1746,7 @@ static void *skinny_ss(void *data) ast_set_callerid(chan, l->hidecallerid ? "" : l->cid_num, l->hidecallerid ? "" : l->cid_name, - chan->cid.cid_ani ? NULL : l->cid_num); + NULL); ast_setstate(chan, AST_STATE_RING); res = ast_pbx_run(chan); if (res) { @@ -2280,10 +2280,8 @@ static struct ast_channel *skinny_new(struct skinny_subchannel *sub, int state) strncpy(tmp->context, l->context, sizeof(tmp->context)-1); strncpy(tmp->exten,l->exten, sizeof(tmp->exten)-1); - if (!ast_strlen_zero(l->cid_num)) { + if (!ast_strlen_zero(l->cid_num)) tmp->cid.cid_num = strdup(l->cid_num); - tmp->cid.cid_ani = strdup(l->cid_num); - } if (!ast_strlen_zero(l->cid_name)) tmp->cid.cid_name = strdup(l->cid_name);