]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
fixes sip registration using authuser in user.conf
authorDavid Vossel <dvossel@digium.com>
Fri, 9 Oct 2009 17:52:35 +0000 (17:52 +0000)
committerDavid Vossel <dvossel@digium.com>
Fri, 9 Oct 2009 17:52:35 +0000 (17:52 +0000)
(closes issue #14954)
Reported by: tornblad
Tested by: mmichelson, tornblad, dvossel

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@223205 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 47b1f95085839c3626838343614dc0be6d6c5adb..15e00ba64b1be05ed0a6eeb7d41f70453dd5d481 100644 (file)
@@ -18518,6 +18518,7 @@ static int reload_config(enum channelreloadreason reason)
                                        const char *username = ast_variable_retrieve(ucfg, cat, "username");
                                        const char *secret = ast_variable_retrieve(ucfg, cat, "secret");
                                        const char *contact = ast_variable_retrieve(ucfg, cat, "contact");
+                                       const char *authuser = ast_variable_retrieve(ucfg, cat, "authuser");
                                        if (!host)
                                                host = ast_variable_retrieve(ucfg, "general", "host");
                                        if (!username)
@@ -18527,10 +18528,17 @@ static int reload_config(enum channelreloadreason reason)
                                        if (!contact)
                                                contact = "s";
                                        if (!ast_strlen_zero(username) && !ast_strlen_zero(host)) {
-                                               if (!ast_strlen_zero(secret))
-                                                       snprintf(tmp, sizeof(tmp), "%s:%s@%s/%s", username, secret, host, contact);
-                                               else
+                                               if (!ast_strlen_zero(secret)) {
+                                                       if (!ast_strlen_zero(authuser)) {
+                                                               snprintf(tmp, sizeof(tmp), "%s:%s:%s@%s/%s", username, secret, authuser, host, contact);
+                                                       } else {
+                                                               snprintf(tmp, sizeof(tmp), "%s:%s@%s/%s", username, secret, host, contact);
+                                                       }
+                                               } else if (!ast_strlen_zero(authuser)) {
+                                                       snprintf(tmp, sizeof(tmp), "%s::%s@%s/%s", username, authuser, host, contact);
+                                               } else {
                                                        snprintf(tmp, sizeof(tmp), "%s@%s/%s", username, host, contact);
+                                               }
                                                if (sip_register(tmp, 0) == 0)
                                                        registry_count++;
                                        }