diff options
author | Joshua Colp <jcolp@digium.com> | 2008-12-10 15:22:26 +0000 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2008-12-10 15:22:26 +0000 |
commit | d8c152f7f0576ed97518a934351aa70de9b4aed8 (patch) | |
tree | 9f65574525ea7e0182855245d3bdd9bcb0da0683 /channels | |
parent | ef965af2707d881fa9ecd81a07d602433b152f24 (diff) |
When transmitting a register set the socket port to the local one for the transport being used, not the port for the remote server.
(closes issue #13633)
Reported by: performer
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@162619 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_sip.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 93912fc0b..12d5944ba 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -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 |