diff --git a/vlib/net/urllib/urllib.v b/vlib/net/urllib/urllib.v index ff19431499..825ddb73a0 100644 --- a/vlib/net/urllib/urllib.v +++ b/vlib/net/urllib/urllib.v @@ -599,7 +599,7 @@ fn parse_host(host string) ?string { return host1 + host2 + host3 } if idx := host.last_index(':') { - colon_port = host[idx..] + colon_port = host[idx..i] if !valid_optional_port(colon_port) { return error(error_msg('parse_host: invalid port $colon_port after host ', '')) diff --git a/vlib/net/urllib/urllib_test.v b/vlib/net/urllib/urllib_test.v index 50ee67e6aa..16c58abd7d 100644 --- a/vlib/net/urllib/urllib_test.v +++ b/vlib/net/urllib/urllib_test.v @@ -98,3 +98,24 @@ fn test_parse_empty_query_two() ? { assert qvalues_map == {} assert query_str == query_encode } + +fn test_parse() ? { + urls := [ + 'jdbc:mysql://test_user:ouupppssss@localhost:3306/sakila?profileSQL=true', + 'ftp://ftp.is.co.za/rfc/rfc1808.txt', + 'http://www.ietf.org/rfc/rfc2396.txt#header1', + 'ldap://[2001:db8::7]/c=GB?objectClass=one&objectClass=two', + 'mailto:John.Doe@example.com', + 'news:comp.infosystems.www.servers.unix', + 'tel:+1-816-555-1212', + 'telnet://192.0.2.16:80/', + 'urn:oasis:names:specification:docbook:dtd:xml:4.1.2', + 'foo://example.com:8042/over/there?name=ferret#nose', + ] + for url in urls { + _ := urllib.parse(url) or { + assert false + panic('FAILED parsing url') + } + } +}