|
@@ -73,6 +73,12 @@ type Address interface {
|
|
|
// ParseAddress parses a string into an Address. The return value will be an IPAddress when
|
|
// ParseAddress parses a string into an Address. The return value will be an IPAddress when
|
|
|
// the string is in the form of IPv4 or IPv6 address, or a DomainAddress otherwise.
|
|
// the string is in the form of IPv4 or IPv6 address, or a DomainAddress otherwise.
|
|
|
func ParseAddress(addr string) Address {
|
|
func ParseAddress(addr string) Address {
|
|
|
|
|
+ // Handle IPv6 address in form as "[2001:4860:0:2001::68]"
|
|
|
|
|
+ lenAddr := len(addr)
|
|
|
|
|
+ if lenAddr > 0 && addr[0] == '[' && addr[lenAddr-1] == ']' {
|
|
|
|
|
+ addr = addr[1 : lenAddr-1]
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
ip := net.ParseIP(addr)
|
|
ip := net.ParseIP(addr)
|
|
|
if ip != nil {
|
|
if ip != nil {
|
|
|
return IPAddress(ip)
|
|
return IPAddress(ip)
|