When transmitting a register set the socket port to the local one for the transport...
authorJoshua Colp <jcolp@digium.com>
Wed, 10 Dec 2008 15:22:26 +0000 (15:22 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 10 Dec 2008 15:22:26 +0000 (15:22 +0000)
(closes issue #13633)
Reported by: performer

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

channels/chan_sip.c

index 93912fc..12d5944 100644 (file)
@@ -10545,7 +10545,9 @@ static int transmit_register(struct sip_registry *r, int sipmethod, const char *
 
                /* Set transport and port so the correct contact is built */
                p->socket.type = r->transport;
-               p->socket.port = htons(r->portno);
+               if (r->transport == SIP_TRANSPORT_TLS || r->transport == SIP_TRANSPORT_TCP) {
+                       p->socket.port = sip_tcp_desc.local_address.sin_port;
+               }
 
                /*
                  check which address we should use in our contact header