]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
simplify register_peer_exten() removing some duplicated code.
authorLuigi Rizzo <rizzo@icir.org>
Mon, 22 May 2006 02:02:57 +0000 (02:02 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Mon, 22 May 2006 02:02:57 +0000 (02:02 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@29315 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index cce89c636be2ad41628375946041839a70458934..bb57c49d66742df2b7868600c1cf74837cd8e9be 100644 (file)
@@ -1946,32 +1946,32 @@ static void register_peer_exten(struct sip_peer *peer, int onoff)
 {
        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@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 */