]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
reverses minor sip registration regression
authorDavid Vossel <dvossel@digium.com>
Tue, 15 Dec 2009 18:56:14 +0000 (18:56 +0000)
committerDavid Vossel <dvossel@digium.com>
Tue, 15 Dec 2009 18:56:14 +0000 (18:56 +0000)
reverses the changes caused by issue #15539. The
issue reported was expected behavior.

(issue #15539)

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

channels/chan_sip.c

index c9b6ab39e25196c3af52ad6f168c3c52006711db..1968609a04940901f2185873b11d38cf04565042 100644 (file)
@@ -10230,13 +10230,20 @@ static int transmit_register(struct sip_registry *r, int sipmethod, const char *
                else
                        snprintf(to, sizeof(to), "<sip:%s@%s>", r->username, p->tohost);
        }
-
-       /* Host is what we are registered to, regardless if a domain exists in the username */
-       if (r->portno && r->portno != STANDARD_SIP_PORT)
-               snprintf(addr, sizeof(addr), "sip:%s:%d", r->hostname, r->portno);
-       else
-               snprintf(addr, sizeof(addr), "sip:%s", r->hostname);
-
+       
+       /* Fromdomain is what we are registering to, regardless of actual
+          host name from SRV */
+       if (!ast_strlen_zero(p->fromdomain)) {
+               if (r->portno && r->portno != STANDARD_SIP_PORT)
+                       snprintf(addr, sizeof(addr), "sip:%s:%d", p->fromdomain, r->portno);
+               else
+                       snprintf(addr, sizeof(addr), "sip:%s", p->fromdomain);
+       } else {
+               if (r->portno && r->portno != STANDARD_SIP_PORT)
+                       snprintf(addr, sizeof(addr), "sip:%s:%d", r->hostname, r->portno);
+               else
+                       snprintf(addr, sizeof(addr), "sip:%s", r->hostname);
+       }
        ast_string_field_set(p, uri, addr);
 
        p->branch ^= ast_random();