Skip to content
This repository has been archived by the owner on Jan 12, 2024. It is now read-only.

Commit

Permalink
fix udp port-mapping bug(first packet loss bug)
Browse files Browse the repository at this point in the history
  • Loading branch information
vzex committed Mar 2, 2020
1 parent d99d16a commit cde49e2
Showing 1 changed file with 20 additions and 6 deletions.
26 changes: 20 additions & 6 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -905,6 +905,7 @@ type clientSession struct {
decide decideStatus
decideLock sync.RWMutex
cacheMsg string
udpCacheMsg []string
cacheLock sync.RWMutex
headSendN int32
headFailN int32
Expand Down Expand Up @@ -1572,13 +1573,21 @@ func (sc *Client) OnTunnelRecv(pipe net.Conn, sessionId int, action byte, conten
f(data)
}
case eTunnel_msg_c_udp:
if session != nil && session.localUdpConn != nil {
//log.Println("tunnel", (content), sessionId)
if sc.stimeout > 0 {
session.dieT = timeNow.now().Add(time.Duration(sc.stimeout) * time.Second)
if session != nil {
if session.localUdpConn != nil {
//log.Println("tunnel", (content), sessionId)
if sc.stimeout > 0 {
session.dieT = timeNow.now().Add(time.Duration(sc.stimeout) * time.Second)
}
pinfo.Add(int64(len(content)), timeNow.now().Unix())
//log.Println("write conn data", len(content), sessionId)
session.localUdpConn.WriteToUDP([]byte(content), session.localUdpAddr)
} else {
if session.udpCacheMsg == nil {
session.udpCacheMsg = []string{}
}
session.udpCacheMsg = append(session.udpCacheMsg, content)
}
pinfo.Add(int64(len(content)), timeNow.now().Unix())
session.localUdpConn.WriteToUDP([]byte(content), session.localUdpAddr)
}
case eTunnel_msg_c:
if conn != nil {
Expand Down Expand Up @@ -1626,6 +1635,11 @@ func (sc *Client) OnTunnelRecv(pipe net.Conn, sessionId int, action byte, conten
sock.Close()
return
}
if session.udpCacheMsg != nil {
for _, c := range session.udpCacheMsg {
session.localUdpConn.WriteToUDP([]byte(c), session.localUdpAddr)
}
}
go func() {
arr := make([]byte, WriteBufferSize)
for {
Expand Down

0 comments on commit cde49e2

Please sign in to comment.