diff --git a/transport/internet/tcp/hub.go b/transport/internet/tcp/hub.go index 155159617..f3e6ade0c 100644 --- a/transport/internet/tcp/hub.go +++ b/transport/internet/tcp/hub.go @@ -6,6 +6,7 @@ import ( "context" gotls "crypto/tls" "strings" + "time" "v2ray.com/core/common" "v2ray.com/core/common/net" @@ -64,10 +65,14 @@ func (v *Listener) keepAccepting() { for { conn, err := v.listener.Accept() if err != nil { - if strings.Contains(err.Error(), "closed") { + errStr := err.Error() + if strings.Contains(errStr, "closed") { break } newError("failed to accepted raw connections").Base(err).AtWarning().WriteToLog() + if strings.Contains(errStr, "too many") { + time.Sleep(time.Millisecond * 500) + } continue }