[asterisk-commits] dvossel: branch 1.6.0 r225310 - in /branches/1.6.0: ./ channels/ configs/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Oct 21 17:05:52 CDT 2009


Author: dvossel
Date: Wed Oct 21 17:05:46 2009
New Revision: 225310

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=225310
Log:
Merged revisions 225033 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

................
  r225033 | dvossel | 2009-10-21 09:39:10 -0500 (Wed, 21 Oct 2009) | 27 lines
  
  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/
  ........
................

Modified:
    branches/1.6.0/   (props changed)
    branches/1.6.0/channels/chan_iax2.c
    branches/1.6.0/channels/chan_sip.c
    branches/1.6.0/configs/iax.conf.sample
    branches/1.6.0/configs/sip.conf.sample

Propchange: branches/1.6.0/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.0/channels/chan_iax2.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.6.0/channels/chan_iax2.c?view=diff&rev=225310&r1=225309&r2=225310
==============================================================================
--- branches/1.6.0/channels/chan_iax2.c (original)
+++ branches/1.6.0/channels/chan_iax2.c Wed Oct 21 17:05:46 2009
@@ -280,6 +280,7 @@
 						     response, so that we've achieved a three-way handshake with
 						     them before sending voice or anything else*/
 	IAX_ALLOWFWDOWNLOAD = (1 << 26),	/*!< Allow the FWDOWNL command? */
+	IAX_SHRINKCALLERID = (1 << 27),   /*!< Turn on and off caller id shrinking */
 };
 
 static int global_rtautoclear = 120;
@@ -6935,7 +6936,9 @@
 	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_flag(&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)
@@ -12245,10 +12248,11 @@
 
 	/* Reset global codec prefs */	
 	memset(&prefs, 0 , sizeof(struct ast_codec_pref));
-	
+
 	/* Reset Global Flags */
 	memset(&globalflags, 0, sizeof(globalflags));
 	ast_set_flag(&globalflags, IAX_RTUPDATE);
+	ast_set_flag(&globalflags, IAX_SHRINKCALLERID);
 
 #ifdef SO_NO_CHECK
 	nochecksums = 0;
@@ -12485,9 +12489,17 @@
 			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_flag((&globalflags), IAX_SHRINKCALLERID);
+			} else if (ast_false(v->value)) {
+				ast_clear_flag((&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); */

Modified: branches/1.6.0/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.6.0/channels/chan_sip.c?view=diff&rev=225310&r1=225309&r2=225310
==============================================================================
--- branches/1.6.0/channels/chan_sip.c (original)
+++ branches/1.6.0/channels/chan_sip.c Wed Oct 21 17:05:46 2009
@@ -696,6 +696,7 @@
 static int global_rtpkeepalive;		/*!< Send RTP keepalives */
 static int global_reg_timeout;	
 static int global_regattempts_max;	/*!< Registration attempts before giving up */
+static int global_shrinkcallerid;	/*!< enable or disable shrinking of caller id  */
 static int global_allowguest;		/*!< allow unauthenticated users/peers to connect? */
 static int global_callcounter;		/*!< Enable call counters for all devices. This is currently enabled by setting the peer
 						call-limit to 999. When we remove the call-limit from the code, we can make it
@@ -12130,7 +12131,7 @@
 		char *tmp = ast_strdupa(rpid_num); /* XXX the copy can be done later */
 		if (!ast_strlen_zero(calleridname))
 			ast_string_field_set(p, cid_name, calleridname);
-		if (ast_is_shrinkable_phonenumber(tmp))
+		if (global_shrinkcallerid && ast_is_shrinkable_phonenumber(tmp))
 			ast_shrink_phone_number(tmp);
 		ast_string_field_set(p, cid_num, tmp);
 	}
@@ -12193,7 +12194,7 @@
 			ast_string_field_set(p, context, user->context);
 		if (!ast_strlen_zero(user->cid_num)) {
 			char *tmp = ast_strdupa(user->cid_num);
-			if (ast_is_shrinkable_phonenumber(tmp))
+			if (global_shrinkcallerid && ast_is_shrinkable_phonenumber(tmp))
 				ast_shrink_phone_number(tmp);
 			ast_string_field_set(p, cid_num, tmp);
 		}
@@ -12345,7 +12346,7 @@
 		}
 		if (!ast_strlen_zero(peer->cid_num)) {
 			char *tmp = ast_strdupa(peer->cid_num);
-			if (ast_is_shrinkable_phonenumber(tmp))
+			if (global_shrinkcallerid && ast_is_shrinkable_phonenumber(tmp))
 				ast_shrink_phone_number(tmp);
 			ast_string_field_set(p, cid_num, tmp);
 		}
@@ -12462,7 +12463,7 @@
 			<sip:8164444422;phone-context=+1 at 1.2.3.4:5060;user=phone;tag=SDadkoa01-gK0c3bdb43>
 		*/
 		tmp = strsep(&tmp, ";");
-		if (ast_is_shrinkable_phonenumber(tmp))
+		if (global_shrinkcallerid && ast_is_shrinkable_phonenumber(tmp))
 			ast_shrink_phone_number(tmp);
 		ast_string_field_set(p, cid_num, tmp);
 	}
@@ -22131,6 +22132,7 @@
 	global_t1min = DEFAULT_T1MIN;
 	global_qualifyfreq = DEFAULT_QUALIFYFREQ;
 	global_t38_maxdatagram = -1;
+	global_shrinkcallerid = 1;
 
 	global_matchexterniplocally = FALSE;
 
@@ -22517,6 +22519,14 @@
 			} else {
 				global_st_refresher = i;
 			}
+		} else if (!strcasecmp(v->name, "shrinkcallerid")) {
+			if (ast_true(v->value)) {
+				global_shrinkcallerid = 1;
+			} else if (ast_false(v->value)) {
+				global_shrinkcallerid = 0;
+			} else {
+				ast_log(LOG_WARNING, "shrinkcallerid value %s is not valid at line %d.\n", v->value, v->lineno);
+			}
 		}
 	}
 

Modified: branches/1.6.0/configs/iax.conf.sample
URL: http://svnview.digium.com/svn/asterisk/branches/1.6.0/configs/iax.conf.sample?view=diff&rev=225310&r1=225309&r2=225310
==============================================================================
--- branches/1.6.0/configs/iax.conf.sample (original)
+++ branches/1.6.0/configs/iax.conf.sample Wed Oct 21 17:05:46 2009
@@ -368,6 +368,15 @@
 ;10.1.1.0/255.255.255.0 = 24
 ;10.1.2.0/255.255.255.0 = 32
 ;
+
+; The shrinkcallerid function removes '(', ' ', ')', non-trailing '.', and '-' not
+; in square brackets.  For example, the caller id value 555.5555 becomes 5555555
+; when this option is enabled.  Disabling this option results in no modification
+; of the caller id value, which is necessary when the caller id represents something
+; that must be preserved.  This option can only be used in the [general] section.
+; By default this option is on.
+;
+;shrinkcallerid=yes     ; on by default
 
 ; Guest sections for unauthenticated connection attempts.  Just specify an
 ; empty secret, or provide no secret section.

Modified: branches/1.6.0/configs/sip.conf.sample
URL: http://svnview.digium.com/svn/asterisk/branches/1.6.0/configs/sip.conf.sample?view=diff&rev=225310&r1=225309&r2=225310
==============================================================================
--- branches/1.6.0/configs/sip.conf.sample (original)
+++ branches/1.6.0/configs/sip.conf.sample Wed Oct 21 17:05:46 2009
@@ -278,6 +278,15 @@
 ;contactdeny=0.0.0.0/0.0.0.0           ; Use contactpermit and contactdeny to
 ;contactpermit=172.16.0.0/255.255.0.0  ; restrict at what IPs your users may
                                        ; register their phones.
+
+; The shrinkcallerid function removes '(', ' ', ')', non-trailing '.', and '-' not
+; in square brackets.  For example, the caller id value 555.5555 becomes 5555555
+; when this option is enabled.  Disabling this option results in no modification
+; of the caller id value, which is necessary when the caller id represents something
+; that must be preserved.  This option can only be used in the [general] section.
+; By default this option is on.
+;
+;shrinkcallerid=yes     ; on by default
 
 ;
 ; If regcontext is specified, Asterisk will dynamically create and destroy a




More information about the asterisk-commits mailing list