diff --git a/vlib/net/util.v b/vlib/net/util.v index f7ad4b6c83f188..e4bdfd6adb398a 100644 --- a/vlib/net/util.v +++ b/vlib/net/util.v @@ -21,20 +21,24 @@ pub fn split_address(addr string) !(string, u16) { port := addr.all_after_last(']:').int() p := validate_port(port)! return address, p - } else if _ := addr.index(':') { - // ipv6 ::1 - if addr.all_before_last(':').trim(':') == '' { + } else if _ := addr.index('::') { + // ipv6 host only ::1 + if addr.all_before_last('::') == '' { return addr, 0 } else { - // ip:port + // addr:port address := addr.all_before_last(':') port := addr.all_after_last(':').int() p := validate_port(port)! return address, p } + } else if _ := addr.index(':') { + // addr:port + address := addr.all_before_last(':') + p := validate_port(addr.all_after_last(':').int())! + return address, p } else { // addr only - address := addr.all_before_last(':') - return address, 0 + return addr, 0 } }