From 9354c1a64f567e552b3e0e376610a0503231275a Mon Sep 17 00:00:00 2001 From: Florian Sauerteig 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 42bb04deb5..9b435d00c9 100644 --- a/channels/sip/reqresp_parser.c +++ b/channels/sip/reqresp_parser.c @@ -2323,7 +2323,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); -- 2.47.2