|
|
@ -42,21 +42,22 @@ type mdnsService struct { |
|
|
|
interval time.Duration |
|
|
|
} |
|
|
|
|
|
|
|
func getDialableListenAddr(ph host.Host) (*net.TCPAddr, error) { |
|
|
|
func getDialableListenAddrs(ph host.Host) ([]*net.TCPAddr, error) { |
|
|
|
var out []*net.TCPAddr |
|
|
|
for _, addr := range ph.Addrs() { |
|
|
|
if manet.IsIPLoopback(addr) { |
|
|
|
continue |
|
|
|
} |
|
|
|
na, err := manet.ToNetAddr(addr) |
|
|
|
if err != nil { |
|
|
|
continue |
|
|
|
} |
|
|
|
tcp, ok := na.(*net.TCPAddr) |
|
|
|
if ok { |
|
|
|
return tcp, nil |
|
|
|
out = append(out, tcp) |
|
|
|
} |
|
|
|
} |
|
|
|
return nil, errors.New("failed to find good external addr from peerhost") |
|
|
|
if len(out) == 0 { |
|
|
|
return nil, errors.New("failed to find good external addr from peerhost") |
|
|
|
} |
|
|
|
return out, nil |
|
|
|
} |
|
|
|
|
|
|
|
func NewMdnsService(peerhost host.Host, interval time.Duration) (Service, error) { |
|
|
@ -67,12 +68,14 @@ func NewMdnsService(peerhost host.Host, interval time.Duration) (Service, error) |
|
|
|
var ipaddrs []net.IP |
|
|
|
port := 4001 |
|
|
|
|
|
|
|
addr, err := getDialableListenAddr(peerhost) |
|
|
|
addrs, err := getDialableListenAddrs(peerhost) |
|
|
|
if err != nil { |
|
|
|
log.Warning(err) |
|
|
|
} else { |
|
|
|
ipaddrs = []net.IP{addr.IP} |
|
|
|
port = addr.Port |
|
|
|
port = addrs[0].Port |
|
|
|
for _, a := range addrs { |
|
|
|
ipaddrs = append(ipaddrs, a.IP) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
myid := peerhost.ID().Pretty() |
|
|
|