[svn-commits] trunk r29315 - /trunk/channels/chan_sip.c

svn-commits at lists.digium.com svn-commits at lists.digium.com
Sun May 21 19:02:58 MST 2006


Author: rizzo
Date: Sun May 21 21:02:57 2006
New Revision: 29315

URL: http://svn.digium.com/view/asterisk?rev=29315&view=rev
Log:
simplify register_peer_exten() removing some duplicated code.


Modified:
    trunk/channels/chan_sip.c

Modified: trunk/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_sip.c?rev=29315&r1=29314&r2=29315&view=diff
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Sun May 21 21:02:57 2006
@@ -1946,32 +1946,32 @@
 {
 	char multi[256];
 	char *stringp, *ext, *context;
-	if (!ast_strlen_zero(global_regcontext)) {
+
+	/* XXX note that global_regcontext is both a global 'enable' flag and
+	 * the name of the global regexten context, if not specified
+	 * individually.
+	 */
+	if (ast_strlen_zero(global_regcontext))
+		return;
 
 		ast_copy_string(multi, S_OR(peer->regexten, peer->name), sizeof(multi));
 		stringp = multi;
-		while((ext = strsep(&stringp, "&"))) {
- 			if((context = strchr(ext, '@'))) {
-				context++;
+		while ((ext = strsep(&stringp, "&"))) {
+ 			if ((context = strchr(ext, '@'))) {
+				*context++ = '\0';	/* split ext at context */
 				if (!ast_context_find(context)) {
 					ast_log(LOG_WARNING, "Context %s must exist in regcontext= in sip.conf!\n", context);
 					continue;
 				}
-				ext = strsep(&ext, "@");
-				if (onoff)
-					ast_add_extension(context, 1, ext, 1, NULL, NULL, "Noop",
-						 ast_strdup(peer->name), free, "SIP");
-				else
-					ast_context_remove_extension(context, ext, 1, NULL);
 			} else {
+				context = global_regcontext;
+			}
 			if (onoff)
-				ast_add_extension(global_regcontext, 1, ext, 1, NULL, NULL, "Noop",
-						  ast_strdup(peer->name), free, "SIP");
+				ast_add_extension(context, 1, ext, 1, NULL, NULL, "Noop",
+					 ast_strdup(peer->name), free, "SIP");
 			else
-				ast_context_remove_extension(global_regcontext, ext, 1, NULL);
-			}
-		}
-	}
+				ast_context_remove_extension(context, ext, 1, NULL);
+		}
 }
 
 /*! \brief Destroy peer object from memory */



More information about the svn-commits mailing list