summaryrefslogtreecommitdiff
path: root/channels/chan_iax2.c
diff options
context:
space:
mode:
authorDavid Vossel <dvossel@digium.com>2009-10-21 14:39:10 +0000
committerDavid Vossel <dvossel@digium.com>2009-10-21 14:39:10 +0000
commit984d6500ce28dc1d0c95394c818700b56c07974a (patch)
tree181bec8fbb0779dcbbda5203bba790476a537082 /channels/chan_iax2.c
parent28d0ec5421212e10af9baf8c70bc32d853352b25 (diff)
Merged revisions 225032 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r225032 | dvossel | 2009-10-21 09:37:04 -0500 (Wed, 21 Oct 2009) | 20 lines IAX/SIP shrinkcallerid option The shrinking of caller id removes '(', ' ', ')', non-trailing '.', and '-' from the string. This means values such as 555.5555 and test-test result in 555555 and testtest. There are instances, such as Skype integration, where a specific value is passed via caller id that must be preserved unmodified. This patch makes the shrinking of caller id optional in chan_sip and chan_iax in order to support such cases. By default this option is on to preserve previous expected behavior. (closes issue #15940) Reported by: dimas Patches: v2-15940.patch uploaded by dimas (license 88) 15940_shrinkcallerid_trunk.c uploaded by dvossel (license 671) Tested by: dvossel Review: https://reviewboard.asterisk.org/r/408/ ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@225033 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_iax2.c')
-rw-r--r--channels/chan_iax2.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 0feec77d1..11d55d364 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -421,7 +421,7 @@ struct iax2_context {
#define IAX_SENDCONNECTEDLINE (uint64_t)(1 << 28) /*!< Allow sending of connected line updates */
#define IAX_RECVCONNECTEDLINE (uint64_t)(1 << 29) /*!< Allow receiving of connected line updates */
#define IAX_FORCE_ENCRYPT (uint64_t)(1 << 30) /*!< Forces call encryption, if encryption not possible hangup */
-
+#define IAX_SHRINKCALLERID (uint64_t)(1 << 31) /*!< Turn on and off caller id shrinking */
static int global_rtautoclear = 120;
static int reload_config(void);
@@ -7224,7 +7224,9 @@ static int check_access(int callno, struct sockaddr_in *sin, struct iax_ies *ies
if (ies->called_number)
ast_string_field_set(iaxs[callno], exten, ies->called_number);
if (ies->calling_number) {
- ast_shrink_phone_number(ies->calling_number);
+ if (ast_test_flag64(&globalflags, IAX_SHRINKCALLERID)) {
+ ast_shrink_phone_number(ies->calling_number);
+ }
ast_string_field_set(iaxs[callno], cid_num, ies->calling_number);
}
if (ies->calling_name)
@@ -12563,6 +12565,7 @@ static int set_config(const char *config_file, int reload)
/* Reset Global Flags */
memset(&globalflags, 0, sizeof(globalflags));
ast_set_flag64(&globalflags, IAX_RTUPDATE);
+ ast_set_flag64((&globalflags), IAX_SHRINKCALLERID);
#ifdef SO_NO_CHECK
nochecksums = 0;
@@ -12829,10 +12832,18 @@ static int set_config(const char *config_file, int reload)
if (sscanf(v->value, "%10hu", &global_maxcallno_nonval) != 1) {
ast_log(LOG_WARNING, "maxcallnumbers_nonvalidated must be set to a valid number. %s is not valid at line %d.\n", v->value, v->lineno);
}
- } else if(!strcasecmp(v->name, "calltokenoptional")) {
+ } else if (!strcasecmp(v->name, "calltokenoptional")) {
if (add_calltoken_ignore(v->value)) {
ast_log(LOG_WARNING, "Invalid calltokenoptional address range - '%s' line %d\n", v->value, v->lineno);
}
+ } else if (!strcasecmp(v->name, "shrinkcallerid")) {
+ if (ast_true(v->value)) {
+ ast_set_flag64((&globalflags), IAX_SHRINKCALLERID);
+ } else if (ast_false(v->value)) {
+ ast_clear_flag64((&globalflags), IAX_SHRINKCALLERID);
+ } else {
+ ast_log(LOG_WARNING, "shrinkcallerid value %s is not valid at line %d.\n", v->value, v->lineno);
+ }
}/*else if (strcasecmp(v->name,"type")) */
/* ast_log(LOG_WARNING, "Ignoring %s\n", v->name); */
v = v->next;