Skip to content

Commit

Permalink
fix nil pointer and testing public ip
Browse files Browse the repository at this point in the history
  • Loading branch information
TenderIronh committed Dec 10, 2021
1 parent f12059d commit a28fc33
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 3 deletions.
29 changes: 29 additions & 0 deletions nat.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,35 @@ func natTest(serverHost string, serverPort int, localPort int, echoPort int) (pu
}
natRsp := NatDetectRsp{}
err = json.Unmarshal(buffer[openP2PHeaderSize:nRead], &natRsp)

// testing for public ip
if echoPort != 0 {
for {
gLog.Printf(LevelINFO, "public ip test start %s:%d", natRsp.IP, echoPort)
conn, err := net.ListenUDP("udp", nil)
if err != nil {
break
}
defer conn.Close()
dst, err := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", natRsp.IP, echoPort))
if err != nil {
break
}
conn.WriteTo([]byte("echo"), dst)
buf := make([]byte, 1600)

// wait for echo testing
conn.SetReadDeadline(time.Now().Add(PublicIPEchoTimeout))
_, _, err = conn.ReadFromUDP(buf)
if err == nil {
gLog.Println(LevelINFO, "public ip:YES")
natRsp.IsPublicIP = 1
} else {
gLog.Println(LevelINFO, "public ip:NO")
}
break
}
}
return natRsp.IP, natRsp.IsPublicIP, natRsp.Port, nil
}

Expand Down
7 changes: 6 additions & 1 deletion p2papp.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ type p2pApp struct {
}

func (app *p2pApp) isActive() bool {
if app.tunnel == nil {
return false
}
if app.rtid == 0 { // direct mode app heartbeat equals to tunnel heartbeat
return app.tunnel.isActive()
}
Expand Down Expand Up @@ -119,7 +122,9 @@ func (app *p2pApp) close() {
if app.listener != nil {
app.listener.Close()
}
app.tunnel.closeOverlayConns(app.id)
if app.tunnel != nil {
app.tunnel.closeOverlayConns(app.id)
}
app.wg.Wait()
}

Expand Down
4 changes: 2 additions & 2 deletions protocol.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
"time"
)

const OpenP2PVersion = "0.96.0"
const OpenP2PVersion = "0.96.1"
const ProducnName string = "openp2p"

type openP2PHeader struct {
Expand Down Expand Up @@ -127,7 +127,7 @@ const (
AESKeySize = 16
MaxRetry = 10
RetryInterval = time.Second * 30
PublicIPEchoTimeout = time.Second * 5
PublicIPEchoTimeout = time.Second * 3
NatTestTimeout = time.Second * 10
)

Expand Down

0 comments on commit a28fc33

Please sign in to comment.