@cryptotaxi247 / kubo / commits / 5ecc4e890

use ALL THE ADDRESSES!

Jeromy committed Apr 29, 2015 at 01:02 UTC 5ecc4e890b814ec20ab601999b6548090720e87f
1 file changed +12 -9
p2p/discovery/mdns.go
+12 -9
@@ -42,21 +42,22 @@ type mdnsService struct {
42 interval time.Duration
43 }
44
45 -func getDialableListenAddr(ph host.Host) (*net.TCPAddr, error) {
45 +func getDialableListenAddrs(ph host.Host) ([]*net.TCPAddr, error) {
46 + var out []*net.TCPAddr
47 for _, addr := range ph.Addrs() {
47 - if manet.IsIPLoopback(addr) {
48 - continue
49 - }
48 na, err := manet.ToNetAddr(addr)
49 if err != nil {
50 continue
51 }
52 tcp, ok := na.(*net.TCPAddr)
53 if ok {
56 - return tcp, nil
54 + out = append(out, tcp)
55 }
56 }
59 - return nil, errors.New("failed to find good external addr from peerhost")
57 + if len(out) == 0 {
58 + return nil, errors.New("failed to find good external addr from peerhost")
59 + }
60 + return out, nil
61 }
62
63 func NewMdnsService(peerhost host.Host, interval time.Duration) (Service, error) {
@@ -67,12 +68,14 @@ func NewMdnsService(peerhost host.Host, interval time.Duration) (Service, error)
68 var ipaddrs []net.IP
69 port := 4001
70
70 - addr, err := getDialableListenAddr(peerhost)
71 + addrs, err := getDialableListenAddrs(peerhost)
72 if err != nil {
73 log.Warning(err)
74 } else {
74 - ipaddrs = []net.IP{addr.IP}
75 - port = addr.Port
75 + port = addrs[0].Port
76 + for _, a := range addrs {
77 + ipaddrs = append(ipaddrs, a.IP)
78 + }
79 }
80
81 myid := peerhost.ID().Pretty()