mirror of
https://github.com/cedar2025/hysteria.git
synced 2025-06-08 05:19:56 +00:00
Fix TCP timeout not works in TUN server
This commit is contained in:
parent
abfacebd40
commit
68d8cd4043
@ -222,6 +222,11 @@ 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") {
|
||||
logrus.WithFields(logrus.Fields{
|
||||
"src": addr.String(),
|
||||
"dst": reqAddr,
|
||||
}).Debugf("TUN %s closed for timeout", strings.ToUpper(addr.Network()))
|
||||
} else {
|
||||
logrus.WithFields(logrus.Fields{
|
||||
"error": err,
|
||||
|
@ -3,6 +3,7 @@ package tun
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
tun2socks "github.com/eycorsican/go-tun2socks/core"
|
||||
"github.com/tobyxdd/hysteria/pkg/acl"
|
||||
"github.com/tobyxdd/hysteria/pkg/utils"
|
||||
"net"
|
||||
@ -65,10 +66,15 @@ func (s *Server) Handle(conn net.Conn, target *net.TCPAddr) error {
|
||||
}
|
||||
|
||||
func (s *Server) relayTCP(clientConn, relayConn net.Conn) {
|
||||
closeErr := utils.PipePairWithTimeout(clientConn, relayConn, s.Timeout)
|
||||
closeErr := utils.PipePairWithTimeout(relayConn, clientConn, s.Timeout)
|
||||
if s.ErrorFunc != nil {
|
||||
s.ErrorFunc(clientConn.LocalAddr(), relayConn.RemoteAddr().String(), closeErr)
|
||||
}
|
||||
relayConn.Close()
|
||||
clientConn.Close()
|
||||
if closeErr != nil && closeErr.Error() == "deadline exceeded" {
|
||||
if clientConn, ok := clientConn.(tun2socks.TCPConn); ok {
|
||||
clientConn.Abort()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user