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);
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);
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;
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);
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);
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) {
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);
}
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);
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;
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))
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
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) {
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);