aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--channels/chan_sip.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index e873a162f..a99428774 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -2903,14 +2903,18 @@ static int create_addr(struct sip_pvt *dialog, const char *opeer)
dialog->sa.sin_family = AF_INET;
dialog->timer_t1 = 500; /* Default SIP retransmission timer T1 (RFC 3261) */
p = find_peer(peer, NULL, 1, 0);
+
+ portno = port ? atoi(port) : STANDARD_SIP_PORT;
if (p) {
int res = create_addr_from_peer(dialog, p);
+ if (portno) {
+ dialog->sa.sin_port = dialog->recv.sin_port = htons(portno);
+ }
ASTOBJ_UNREF(p, sip_destroy_peer);
return res;
}
hostn = peer;
- portno = port ? atoi(port) : STANDARD_SIP_PORT;
if (srvlookup) {
char service[MAXHOSTNAMELEN];
int tportno;