Browse Source

slow down when there is not enough file descriptors. fixes #1574

Darien Raymond 6 years ago
parent
commit
d5de8e27cc
1 changed files with 6 additions and 1 deletions
  1. 6 1
      transport/internet/tcp/hub.go

+ 6 - 1
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
 		}