From: Tilghman Lesher Date: Tue, 3 Aug 2010 20:52:20 +0000 (+0000) Subject: Merged revisions 280811 via svnmerge from X-Git-Tag: 1.6.2.12-rc1~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=81a24c617ba4891dd68d180acc5214f5cef01448;p=thirdparty%2Fasterisk.git Merged revisions 280811 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r280811 | tilghman | 2010-08-03 15:49:10 -0500 (Tue, 03 Aug 2010) | 9 lines Prevent DAHDI channels from overriding the callerid, once it's been set by the user. (closes issue #16661) Reported by: jstapleton Patches: 20100414__issue16661.diff.txt uploaded by tilghman (license 14) 20100415__issue16661__1.6.2.diff.txt uploaded by tilghman (license 14) Tested by: jstapleton ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@280812 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index b44c70bec0..fb45564e3d 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -6892,7 +6892,7 @@ static struct ast_frame *dahdi_read(struct ast_channel *ast) return &p->subs[idx].f; } - if (p->subs[idx].needcallerid) { + if (p->subs[idx].needcallerid && !ast->cid.cid_tns) { ast_set_callerid(ast, S_OR(p->lastcid_num, NULL), S_OR(p->lastcid_name, NULL), S_OR(p->lastcid_num, NULL) @@ -13296,12 +13296,12 @@ static void *pri_dchannel(void *vpri) if (chanpos < 0) { ast_log(LOG_WARNING, "Facility Name requested on channel %d/%d not in use on span %d\n", PRI_SPAN(e->facname.channel), PRI_CHANNEL(e->facname.channel), pri->span); - } else { + } else if (pri->pvts[chanpos]->use_callerid) { /* Re-use *69 field for PRI */ ast_mutex_lock(&pri->pvts[chanpos]->lock); ast_copy_string(pri->pvts[chanpos]->lastcid_num, e->facname.callingnum, sizeof(pri->pvts[chanpos]->lastcid_num)); ast_copy_string(pri->pvts[chanpos]->lastcid_name, e->facname.callingname, sizeof(pri->pvts[chanpos]->lastcid_name)); - pri->pvts[chanpos]->subs[SUB_REAL].needcallerid =1; + pri->pvts[chanpos]->subs[SUB_REAL].needcallerid = 1; dahdi_enable_ec(pri->pvts[chanpos]); ast_mutex_unlock(&pri->pvts[chanpos]->lock); } diff --git a/funcs/func_callerid.c b/funcs/func_callerid.c index 5e55854326..3c595daab6 100644 --- a/funcs/func_callerid.c +++ b/funcs/func_callerid.c @@ -191,6 +191,7 @@ static int callerid_read(struct ast_channel *chan, const char *cmd, char *data, static int callerid_write(struct ast_channel *chan, const char *cmd, char *data, const char *value) { + int valid = 1; if (!value || !chan) return -1; @@ -267,6 +268,11 @@ static int callerid_write(struct ast_channel *chan, const char *cmd, char *data, chan->cid.cid_ton = atoi(value); } else { ast_log(LOG_ERROR, "Unknown callerid data type '%s'.\n", data); + valid = 0; + } + + if (valid) { + chan->cid.cid_tns = 1; } return 0;