fix: improve error handling for listener.Accept

This commit is contained in:
SunBK201 2025-11-08 18:04:19 +08:00
parent 8008fdf258
commit 409545d0b5
3 changed files with 18 additions and 3 deletions

View File

@ -3,8 +3,11 @@
package redirect
import (
"errors"
"fmt"
"net"
"syscall"
"time"
"github.com/sirupsen/logrus"
"github.com/sunbk201/ua3f/internal/config"
@ -37,7 +40,10 @@ func (s *Server) Start() (err error) {
var client net.Conn
for {
if client, err = s.listener.Accept(); err != nil {
logrus.Error("s.listener.Accept: ", err)
if errors.Is(err, syscall.EMFILE) {
time.Sleep(time.Second)
}
logrus.Error("s.listener.Accept:", err)
continue
}
logrus.Debugf("Accept connection from %s", client.RemoteAddr().String())

View File

@ -7,6 +7,7 @@ import (
"io"
"net"
"strings"
"syscall"
"time"
"github.com/sirupsen/logrus"
@ -60,7 +61,10 @@ func (s *Server) Start() (err error) {
var client net.Conn
for {
if client, err = s.listener.Accept(); err != nil {
logrus.Errorf("s.listener.Accept: %s", err.Error())
if errors.Is(err, syscall.EMFILE) {
time.Sleep(time.Second)
}
logrus.Error("s.listener.Accept:", err)
continue
}
logrus.Debugf("Accept connection from %s", client.RemoteAddr().String())

View File

@ -4,9 +4,11 @@ package tproxy
import (
"context"
"errors"
"fmt"
"net"
"syscall"
"time"
"golang.org/x/sys/unix"
@ -58,7 +60,10 @@ func (s *Server) Start() error {
var client net.Conn
for {
if client, err = s.listener.Accept(); err != nil {
logrus.Errorf("s.listener.Accept: %s", err.Error())
if errors.Is(err, syscall.EMFILE) {
time.Sleep(time.Second)
}
logrus.Error("s.listener.Accept:", err)
continue
}
logrus.Debugf("Accept connection from %s", client.RemoteAddr().String())