print NAT if detected
Jeromy committed
Nov 2, 2014 at 21:59 UTC
cb2fb9cfe6abd9ab8f0a1d3b52482f7ed2812e94
1 file changed
+17
-3
net/conn/handshake.go
+17
-3
@@ -3,6 +3,7 @@ package conn
3
import (
4
"errors"
5
"fmt"
6
+ "strings"
7
8
handshake "github.com/jbenet/go-ipfs/net/handshake"
9
hspb "github.com/jbenet/go-ipfs/net/handshake/pb"
@@ -105,6 +106,14 @@ func Handshake3(ctx context.Context, c Conn) error {
106
return err
107
}
108
109
+ nat, err := CheckNAT(remoteH.GetObservedAddr())
110
+ if err != nil {
111
+ log.Errorf("Error in NAT detection: %s", err)
112
+ }
113
+ if nat {
114
+ log.Warning("We are probably behind a NAT!")
115
+ }
116
+
117
return nil
118
}
119
@@ -117,8 +126,13 @@ func CheckNAT(obsaddr string) (bool, error) {
126
if err != nil {
127
return false, err
128
}
120
- _ = oma
121
- _ = addrs
129
123
- panic("not yet implemented!")
130
+ omastr := oma.String()
131
+ for _, addr := range addrs {
132
+ if strings.HasPrefix(addr.String(), omastr) {
133
+ return false, nil
134
+ }
135
+ }
136
+
137
+ return true, nil
138
}