From 2ff7db96d274b0c039830702f5a5d4365a658e5c Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Thu, 21 Dec 2023 14:09:17 +0800 Subject: [PATCH] =?UTF-8?q?other:=20=E4=BC=98=E5=8C=96=20server=20?= =?UTF-8?q?=E5=8C=85=E6=B6=88=E6=81=AF=E5=88=86=E5=8F=91=E6=97=B6=E5=AF=B9?= =?UTF-8?q?=E4=BA=8E=20cancel=20=E7=9A=84=E5=A4=84=E7=90=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/server.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/server/server.go b/server/server.go index 098337b..d057225 100644 --- a/server/server.go +++ b/server/server.go @@ -707,9 +707,9 @@ func (slf *Server) dispatchMessage(dispatcher *dispatcher, msg *Message) { } present := time.Now() - defer func(msg *Message) { - super.Handle(cancel) - if msg.t != MessageTypeAsync && msg.t != MessageTypeUniqueAsync && msg.t != MessageTypeShuntAsync && msg.t != MessageTypeUniqueShuntAsync { + if msg.t != MessageTypeAsync && msg.t != MessageTypeUniqueAsync && msg.t != MessageTypeShuntAsync && msg.t != MessageTypeUniqueShuntAsync { + defer func(msg *Message) { + super.Handle(cancel) if err := recover(); err != nil { stack := string(debug.Stack()) log.Error("Server", log.String("MessageType", messageNames[msg.t]), log.String("Info", msg.String()), log.Any("error", err), log.String("stack", stack)) @@ -730,8 +730,12 @@ func (slf *Server) dispatchMessage(dispatcher *dispatcher, msg *Message) { if !slf.isShutdown.Load() { slf.messagePool.Release(msg) } + }(msg) + } else { + if cancel != nil { + defer cancel() } - }(msg) + } switch msg.t { case MessageTypePacket: