[asterisk-commits] branch group/autoconf_and_menuselect r16462 - in /team/group/autoconf_and_men...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Wed Mar 29 22:29:20 MST 2006


Author: russell
Date: Wed Mar 29 23:29:18 2006
New Revision: 16462

URL: http://svn.digium.com/view/asterisk?rev=16462&view=rev
Log: (empty)

Modified:
    team/group/autoconf_and_menuselect/   (props changed)
    team/group/autoconf_and_menuselect/callerid.c
    team/group/autoconf_and_menuselect/channels/chan_sip.c
    team/group/autoconf_and_menuselect/include/asterisk/callerid.h

Propchange: team/group/autoconf_and_menuselect/
------------------------------------------------------------------------------
    automerge = *

Propchange: team/group/autoconf_and_menuselect/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Mar 29 23:29:18 2006
@@ -1,1 +1,1 @@
-/trunk:1-16400
+/trunk:1-16460

Modified: team/group/autoconf_and_menuselect/callerid.c
URL: http://svn.digium.com/view/asterisk/team/group/autoconf_and_menuselect/callerid.c?rev=16462&r1=16461&r2=16462&view=diff
==============================================================================
--- team/group/autoconf_and_menuselect/callerid.c (original)
+++ team/group/autoconf_and_menuselect/callerid.c Wed Mar 29 23:29:18 2006
@@ -905,19 +905,40 @@
 	n[y] = '\0';
 }
 
+/*! \brief Checks if phone number consists of valid characters 
+	\param exten	String that needs to be checked
+	\param valid	Valid characters in string
+	\return 1 if valid string, 0 if string contains invalid characters
+*/
+static int ast_is_valid_string(const char *exten, const char *valid)
+{
+	int x;
+
+	if (ast_strlen_zero(exten))
+		return 0;
+	for (x=0; exten[x]; x++)
+		if (!strchr(valid, exten[x]))
+			return 0;
+	return 1;
+}
+
 /*! \brief checks if string consists only of digits and * \# and + 
 	\return 1 if string is valid AST phone number
 	\return 0 if not
 */
-int ast_isphonenumber(char *n)
-{
-	int x;
-	if (ast_strlen_zero(n))
-		return 0;
-	for (x=0;n[x];x++)
-		if (!strchr("0123456789*#+", n[x]))
-			return 0;
-	return 1;
+int ast_isphonenumber(const char *n)
+{
+	return ast_is_valid_string(n, "0123456789*#+");
+}
+
+/*! \brief checks if string consists only of digits and ( ) - * \# and + 
+	Pre-qualifies the string for ast_shrink_phone_number()
+	\return 1 if string is valid AST shrinkable phone number
+	\return 0 if not
+*/
+int ast_is_shrinkable_phonenumber(const char *exten)
+{
+	return ast_is_valid_string(exten, "0123456789*#+()-.");
 }
 
 /*! \brief parse string for caller id information 

Modified: team/group/autoconf_and_menuselect/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/group/autoconf_and_menuselect/channels/chan_sip.c?rev=16462&r1=16461&r2=16462&view=diff
==============================================================================
--- team/group/autoconf_and_menuselect/channels/chan_sip.c (original)
+++ team/group/autoconf_and_menuselect/channels/chan_sip.c Wed Mar 29 23:29:18 2006
@@ -7230,8 +7230,13 @@
 		if ((c = strchr(of, ':')))
 			*c = '\0';
 		tmp = ast_strdupa(of);
-		ast_shrink_phone_number(tmp);
-		ast_string_field_set(p, cid_num, tmp);
+		if (tmp) {
+			if (ast_is_shrinkable_phonenumber(tmp))
+				ast_shrink_phone_number(tmp);
+			ast_string_field_set(p, cid_num, tmp);
+		} else {
+			ast_string_field_set(p, cid_num, of);
+		}
 	}
 	if (ast_strlen_zero(of))
 		return 0;
@@ -7257,8 +7262,13 @@
 			if (*calleridname)
 				ast_string_field_set(p, cid_name, calleridname);
 			tmp = ast_strdupa(rpid_num);
-			ast_shrink_phone_number(tmp);
-			ast_string_field_set(p, cid_num, tmp);
+			if (tmp) {
+				if (ast_is_shrinkable_phonenumber(tmp))
+					ast_shrink_phone_number(tmp);
+				ast_string_field_set(p, cid_num, tmp);
+			} else {
+				ast_string_field_set(p, cid_num, rpid_num);
+			}
 		}
 
 		
@@ -7289,8 +7299,13 @@
 				ast_string_field_set(p, context, user->context);
 			if (!ast_strlen_zero(user->cid_num) && !ast_strlen_zero(p->cid_num)) {
 				char *tmp = ast_strdupa(user->cid_num);
-				ast_shrink_phone_number(tmp);
-				ast_string_field_set(p, cid_num, tmp);
+				if (tmp) {
+					if (ast_is_shrinkable_phonenumber(tmp))
+						ast_shrink_phone_number(tmp);
+					ast_string_field_set(p, cid_num, tmp);
+				} else {
+					ast_string_field_set(p, cid_num, user->cid_num);
+				}
 			}
 			if (!ast_strlen_zero(user->cid_name) && !ast_strlen_zero(p->cid_num))
 				ast_string_field_set(p, cid_name, user->cid_name);
@@ -7360,8 +7375,13 @@
 				char *tmp = ast_strdupa(rpid_num);
 				if (*calleridname)
 					ast_string_field_set(p, cid_name, calleridname);
-				ast_shrink_phone_number(tmp);
-				ast_string_field_set(p, cid_num, tmp);
+				if (tmp) {
+					if (ast_is_shrinkable_phonenumber(tmp))
+						ast_shrink_phone_number(tmp);
+					ast_string_field_set(p, cid_num, tmp);
+				} else {
+					ast_string_field_set(p, cid_num, rpid_num);
+				}
 			}
 			usenatroute = ast_test_flag(&p->flags[0], SIP_NAT_ROUTE);
 			if (p->rtp) {
@@ -7410,8 +7430,13 @@
 				}
 				if (!ast_strlen_zero(peer->cid_num) && !ast_strlen_zero(p->cid_num)) {
 					char *tmp = ast_strdupa(peer->cid_num);
-					ast_shrink_phone_number(tmp);
-					ast_string_field_set(p, cid_num, tmp);
+					if (tmp) {
+						if (ast_is_shrinkable_phonenumber(tmp))
+							ast_shrink_phone_number(tmp);
+						ast_string_field_set(p, cid_num, tmp);
+					} else {
+						ast_string_field_set(p, cid_num, peer->cid_num);
+					}
 				}
 				if (!ast_strlen_zero(peer->cid_name) && !ast_strlen_zero(p->cid_name)) 
 					ast_string_field_set(p, cid_name, peer->cid_name);

Modified: team/group/autoconf_and_menuselect/include/asterisk/callerid.h
URL: http://svn.digium.com/view/asterisk/team/group/autoconf_and_menuselect/include/asterisk/callerid.h?rev=16462&r1=16461&r2=16462&view=diff
==============================================================================
--- team/group/autoconf_and_menuselect/include/asterisk/callerid.h (original)
+++ team/group/autoconf_and_menuselect/include/asterisk/callerid.h Wed Mar 29 23:29:18 2006
@@ -193,11 +193,18 @@
  */
 extern void ast_shrink_phone_number(char *n);
 
-/*! \brief Check if a string consists only of digits.   
+/*! \brief Check if a string consists only of digits and + \#
     \param n number to be checked.
     \return Returns 0 if n is a number, 1 if it's not.
  */
-extern int ast_isphonenumber(char *n);
+extern int ast_isphonenumber(const char *n);
+
+/*! \brief Check if a string consists only of digits and and + \# ( ) - .
+	(meaning it can be cleaned with ast_shrink_phone_number)
+    \param exten The extension (or URI) to be checked.
+    \return Returns 0 if n is a number, 1 if it's not.
+ */
+extern int ast_is_shrinkable_phonenumber(const char *exten);
 
 extern int ast_callerid_split(const char *src, char *name, int namelen, char *num, int numlen);
 



More information about the asterisk-commits mailing list