Merged revisions 225032 via svnmerge from
[asterisk/asterisk.git] / channels / chan_iax2.c
index 0feec77..11d55d3 100644 (file)
@@ -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;