other: 优化 server 包消息分发时对于 cancel 的处理逻辑

This commit is contained in:
kercylan98 2023-12-21 14:09:17 +08:00
parent 9038bfc2b5
commit 2ff7db96d2
1 changed files with 8 additions and 4 deletions

View File

@ -707,9 +707,9 @@ func (slf *Server) dispatchMessage(dispatcher *dispatcher, msg *Message) {
} }
present := time.Now() present := time.Now()
defer func(msg *Message) { if msg.t != MessageTypeAsync && msg.t != MessageTypeUniqueAsync && msg.t != MessageTypeShuntAsync && msg.t != MessageTypeUniqueShuntAsync {
super.Handle(cancel) defer func(msg *Message) {
if msg.t != MessageTypeAsync && msg.t != MessageTypeUniqueAsync && msg.t != MessageTypeShuntAsync && msg.t != MessageTypeUniqueShuntAsync { super.Handle(cancel)
if err := recover(); err != nil { if err := recover(); err != nil {
stack := string(debug.Stack()) 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)) 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() { if !slf.isShutdown.Load() {
slf.messagePool.Release(msg) slf.messagePool.Release(msg)
} }
}(msg)
} else {
if cancel != nil {
defer cancel()
} }
}(msg) }
switch msg.t { switch msg.t {
case MessageTypePacket: case MessageTypePacket: