mirror of
https://github.com/Li4n0/revsuit.git
synced 2026-09-21 22:30:46 +08:00
feat(recycler): add error cecycler (#10)
This commit is contained in:
+13
-7
@@ -11,6 +11,7 @@ import (
|
||||
|
||||
"github.com/li4n0/revsuit/internal/database"
|
||||
"github.com/li4n0/revsuit/internal/qqwry"
|
||||
"github.com/li4n0/revsuit/internal/recycler"
|
||||
log "unknwon.dev/clog/v2"
|
||||
)
|
||||
|
||||
@@ -46,10 +47,15 @@ func (s *Server) updateRules() error {
|
||||
}
|
||||
|
||||
func (s *Server) handleConnection(conn net.Conn) {
|
||||
defer conn.Close()
|
||||
defer func() {
|
||||
_ = conn.Close()
|
||||
if err := recover(); err != nil {
|
||||
recycler.Recycle(err)
|
||||
}
|
||||
}()
|
||||
|
||||
if err := conn.SetDeadline(time.Now().Add(time.Second * 30)); err != nil {
|
||||
log.Error("RMI set connection deadline error:%v", err)
|
||||
log.Warn("RMI set connection deadline error:%v", err)
|
||||
}
|
||||
|
||||
ip, port, _ := net.SplitHostPort(conn.RemoteAddr().String())
|
||||
@@ -57,7 +63,7 @@ func (s *Server) handleConnection(conn net.Conn) {
|
||||
buf := make([]byte, 1024)
|
||||
_, err := conn.Read(buf)
|
||||
if err != nil {
|
||||
log.Error("RMI read connection error:%v", err)
|
||||
log.Warn("RMI read connection error:%v", err)
|
||||
}
|
||||
|
||||
if !bytes.Contains(buf, []byte{0x4a, 0x52, 0x4d, 0x49}) {
|
||||
@@ -77,7 +83,7 @@ func (s *Server) handleConnection(conn net.Conn) {
|
||||
|
||||
_, err = conn.Write(send)
|
||||
if err != nil {
|
||||
log.Error("RMI write connection error: %v", err)
|
||||
log.Warn("RMI write connection error: %v", err)
|
||||
}
|
||||
|
||||
data := make([]byte, 512)
|
||||
@@ -85,7 +91,7 @@ func (s *Server) handleConnection(conn net.Conn) {
|
||||
for length := 0; length < 50; {
|
||||
n, err := conn.Read(data)
|
||||
if err != nil {
|
||||
log.Error("RMI read connection error: %v", err)
|
||||
log.Warn("RMI read connection error: %v", err)
|
||||
}
|
||||
length += n
|
||||
}
|
||||
@@ -104,7 +110,7 @@ func (s *Server) handleConnection(conn net.Conn) {
|
||||
// create new record
|
||||
r, err := NewRecord(_rule, flag, path, ip, area)
|
||||
if err != nil {
|
||||
log.Error("RMI record[rule_id:%d] created failed :%s", _rule.ID, err)
|
||||
log.Warn("RMI record[rule_id:%d] created failed :%s", _rule.ID, err)
|
||||
return
|
||||
}
|
||||
log.Info("RMI record[id:%d rule:%s remote_ip:%s] has been created", r.ID, _rule.Name, ip)
|
||||
@@ -149,7 +155,7 @@ func (s *Server) Run() {
|
||||
for {
|
||||
tcpConn, err := listener.Accept()
|
||||
if err != nil {
|
||||
log.Error("RMI accept connection error: %v", err)
|
||||
log.Warn("RMI accept connection error: %v", err)
|
||||
continue
|
||||
}
|
||||
go s.handleConnection(tcpConn)
|
||||
|
||||
Reference in New Issue
Block a user