diff --git a/channels/sip/reqresp_parser.c b/channels/sip/reqresp_parser.c index 1541d7c25b88f32aeaa0f7fe61600864765c656b..298b8cb950658f3e273ad6a8e2e4824f63529c73 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);