]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
chan_sip: Fix port parsing for IPv6 addresses in SIP Via headers. 00/1400/1
authorFlorian Sauerteig <ffs@ccn.net>
Tue, 6 Oct 2015 17:40:22 +0000 (19:40 +0200)
committerRichard Mudgett <rmudgett@digium.com>
Tue, 6 Oct 2015 21:34:34 +0000 (16:34 -0500)
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

index 1541d7c25b88f32aeaa0f7fe61600864765c656b..298b8cb950658f3e273ad6a8e2e4824f63529c73 100644 (file)
@@ -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);