Merge pull request #307 from HyNetwork/fix-tun-timeout-check

fix tun timeout check
This commit is contained in:
Toby 2022-04-30 22:25:39 -07:00 committed by GitHub
commit 5d98f7f5c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 4 deletions

View File

@ -275,7 +275,7 @@ func client(config *clientConfig) {
"src": addr.String(),
"dst": reqAddr,
}).Debugf("TUN %s closed for timeout", strings.ToUpper(addr.Network()))
} else if err.Error() == "deadline exceeded" && strings.HasPrefix(addr.Network(), "tcp") {
} else if nErr, ok := err.(net.Error); ok && nErr.Timeout() && strings.HasPrefix(addr.Network(), "tcp") {
logrus.WithFields(logrus.Fields{
"src": addr.String(),
"dst": reqAddr,

View File

@ -35,9 +35,11 @@ func (s *Server) relayTCP(clientConn, relayConn net.Conn) {
}
relayConn.Close()
clientConn.Close()
if closeErr != nil && closeErr.Error() == "deadline exceeded" {
if closeErr != nil {
if err, ok := closeErr.(net.Error); ok && err.Timeout() {
if clientConn, ok := clientConn.(tun2socks.TCPConn); ok {
clientConn.Abort()
}
}
}
}