From 3ec9cf7d6abf589ebca8d56c5e7800b73b825eb1 Mon Sep 17 00:00:00 2001
From: Florian Sauerteig <ffs@ccn.net>
Date: Tue, 6 Oct 2015 19:40:22 +0200
Subject: [PATCH] chan_sip: Fix port parsing for IPv6 addresses in SIP Via
 headers.

If a Via header containes an IPv6 address and a port number is ommitted,
as it is the standard port, we now leave the port empty and to not set it
to the value after the first colon of the IPv6 address.

ASTERISK-25443 #close

Change-Id: Ie3c2f05471cd006bf04ed15598589c09577b1e70
---
 channels/sip/reqresp_parser.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/channels/sip/reqresp_parser.c b/channels/sip/reqresp_parser.c
index 1541d7c25b..298b8cb950 100644
--- a/channels/sip/reqresp_parser.c
+++ b/channels/sip/reqresp_parser.c
@@ -2420,7 +2420,7 @@ struct sip_via *parse_via(const char *header)
 
 	/* store the port, we have to handle ipv6 addresses containing ':'
 	 * characters gracefully */
-	if (((parm = strchr(v->sent_by, ']')) && *(++parm) == ':') || (parm = strchr(v->sent_by, ':'))) {
+	if (((parm = strchr(v->sent_by, ']')) && *(++parm) == ':') || (!(parm = strchr(v->sent_by, ']')) && (parm = strchr(v->sent_by, ':')))) {
 		char *endptr;
 
 		v->port = strtol(++parm, &endptr, 10);
-- 
GitLab