mirror of
https://github.com/logos-messaging/go-multiaddr.git
synced 2026-01-02 13:03:11 +00:00
test ip6 conversion
This commit is contained in:
parent
2bb75c7221
commit
97da87cf8f
10
convert.go
10
convert.go
@ -112,13 +112,13 @@ func ToNetAddr(maddr ma.Multiaddr) (net.Addr, error) {
|
||||
}
|
||||
|
||||
switch network {
|
||||
case "tcp":
|
||||
case "tcp", "tcp4", "tcp6":
|
||||
return net.ResolveTCPAddr(network, host)
|
||||
case "udp":
|
||||
case "udp", "udp4", "udp6":
|
||||
return net.ResolveUDPAddr(network, host)
|
||||
case "utp":
|
||||
case "utp", "utp4", "utp6":
|
||||
return utp.ResolveUTPAddr(network, host)
|
||||
case "ip":
|
||||
case "ip", "ip4", "ip6":
|
||||
return net.ResolveIPAddr(network, host)
|
||||
}
|
||||
|
||||
@ -158,8 +158,10 @@ func DialArgs(m ma.Multiaddr) (string, string, error) {
|
||||
var host string
|
||||
switch parts[0] {
|
||||
case "ip4":
|
||||
network = network + "4"
|
||||
host = strings.Join([]string{parts[1], parts[3]}, ":")
|
||||
case "ip6":
|
||||
network = network + "6"
|
||||
host = fmt.Sprintf("[%s]:%s", parts[1], parts[3])
|
||||
}
|
||||
return network, host, nil
|
||||
|
||||
@ -152,7 +152,10 @@ func TestDialArgs(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
test("/ip4/127.0.0.1/udp/1234", "udp", "127.0.0.1:1234")
|
||||
test("/ip4/127.0.0.1/tcp/4321", "tcp", "127.0.0.1:4321")
|
||||
test("/ip4/127.0.0.1/udp/1234/utp", "utp", "127.0.0.1:1234")
|
||||
test("/ip4/127.0.0.1/udp/1234", "udp4", "127.0.0.1:1234")
|
||||
test("/ip4/127.0.0.1/tcp/4321", "tcp4", "127.0.0.1:4321")
|
||||
test("/ip4/127.0.0.1/udp/1234/utp", "utp4", "127.0.0.1:1234")
|
||||
test("/ip6/::1/udp/1234", "udp6", "[::1]:1234")
|
||||
test("/ip6/::1/tcp/4321", "tcp6", "[::1]:4321")
|
||||
test("/ip6/::1/udp/1234/utp", "utp6", "[::1]:1234")
|
||||
}
|
||||
|
||||
12
net.go
12
net.go
@ -106,12 +106,12 @@ func (d *Dialer) Dial(remote ma.Multiaddr) (Conn, error) {
|
||||
// ok, Dial!
|
||||
var nconn net.Conn
|
||||
switch rnet {
|
||||
case "tcp":
|
||||
case "tcp", "tcp4", "tcp6":
|
||||
nconn, err = d.Dialer.Dial(rnet, rnaddr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case "utp":
|
||||
case "udp", "udp4", "udp6":
|
||||
return nil, fmt.Errorf("utp is currently broken")
|
||||
|
||||
// // construct utp dialer, with options on our net.Dialer
|
||||
@ -236,6 +236,14 @@ func Listen(laddr ma.Multiaddr) (Listener, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// we need to fetch the new multiaddr from the listener, as it
|
||||
// may have resolved to some other value.
|
||||
nladdr, err := FromNetAddr(nl.Addr())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
laddr = nladdr
|
||||
|
||||
return &maListener{
|
||||
Listener: nl,
|
||||
laddr: laddr,
|
||||
|
||||
27
net_test.go
27
net_test.go
@ -141,7 +141,10 @@ func TestListen(t *testing.T) {
|
||||
|
||||
func TestListenAddrs(t *testing.T) {
|
||||
|
||||
test := func(addr string, succeed bool) {
|
||||
test := func(addr, resaddr string, succeed bool) {
|
||||
if resaddr == "" {
|
||||
resaddr = addr
|
||||
}
|
||||
|
||||
maddr := newMultiaddr(t, addr)
|
||||
l, err := Listen(maddr)
|
||||
@ -152,10 +155,13 @@ func TestListenAddrs(t *testing.T) {
|
||||
return
|
||||
}
|
||||
if succeed && err != nil {
|
||||
t.Fatal("failed to listen", addr, err)
|
||||
t.Error("failed to listen", addr, err)
|
||||
}
|
||||
if l == nil {
|
||||
t.Fatal("failed to listen", addr, succeed, err)
|
||||
t.Error("failed to listen", addr, succeed, err)
|
||||
}
|
||||
if l.Multiaddr().String() != resaddr {
|
||||
t.Error("listen addr did not resolve properly", l.Multiaddr().String(), resaddr, succeed, err)
|
||||
}
|
||||
|
||||
if err = l.Close(); err != nil {
|
||||
@ -163,9 +169,18 @@ func TestListenAddrs(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
test("/ip4/127.0.0.1/tcp/4324", true)
|
||||
test("/ip4/127.0.0.1/udp/4325", false)
|
||||
test("/ip4/127.0.0.1/udp/4326/udt", false)
|
||||
test("/ip4/127.0.0.1/tcp/4324", "", true)
|
||||
test("/ip4/127.0.0.1/udp/4325", "", false)
|
||||
test("/ip4/127.0.0.1/udp/4326/udt", "", false)
|
||||
test("/ip4/0.0.0.0/tcp/4324", "", true)
|
||||
test("/ip4/0.0.0.0/udp/4325", "", false)
|
||||
test("/ip4/0.0.0.0/udp/4326/udt", "", false)
|
||||
test("/ip6/::1/tcp/4324", "", true)
|
||||
test("/ip6/::1/udp/4325", "", false)
|
||||
test("/ip6/::1/udp/4326/udt", "", false)
|
||||
test("/ip6/::/tcp/4324", "", true)
|
||||
test("/ip6/::/udp/4325", "", false)
|
||||
test("/ip6/::/udp/4326/udt", "", false)
|
||||
// test("/ip4/127.0.0.1/udp/4326/utp", true)
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user