Skip to content

Commit 2b34ae1

Browse files
author
Gustavo Brunoro
committed
parsing embedded IPv4 addresses
1 parent f4175a1 commit 2b34ae1

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

lib/elixir/lib/uri.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ defmodule URI do
192192
# Split an authority into its userinfo, host and port parts.
193193
defp split_authority(s) do
194194
s = s || ""
195-
components = Regex.run %r/(^(.*)@)?(\[[a-zA-Z0-9:]*\]|[^:]*)(:(\d*))?/, s
195+
components = Regex.run %r/(^(.*)@)?(\[[a-zA-Z0-9:.]*\]|[^:]*)(:(\d*))?/, s
196196

197197
destructure [_, _, userinfo, host, _, port], nillify(components)
198198
port = if port, do: binary_to_integer(port)

lib/elixir/test/elixir/uri_test.exs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,14 @@ defmodule URITest do
134134

135135
test :ipv6_addresses do
136136
addrs = [
137-
"::1",
138-
"2607:f3f0:2:0:216:3cff:fef0:174a",
139-
"2051:0db8:2d5a:3521:8313:ffad:1242:8e2e"
137+
"::", # undefined
138+
"::1", # loopback
139+
"1080::8:800:200C:417A", # unicast
140+
"FF01::101", # multicast
141+
"2607:f3f0:2:0:216:3cff:fef0:174a", # abbreviated
142+
"2607:f3F0:2:0:216:3cFf:Fef0:174A", # mixed hex case
143+
"2051:0db8:2d5a:3521:8313:ffad:1242:8e2e", # complete
144+
"::00:192.168.10.184" # embedded IPv4
140145
]
141146

142147
Enum.each addrs, fn(addr) ->

0 commit comments

Comments
 (0)