fix: 修复 server 包 RegMessageExecBeforeEvent 函数导致内存泄露的问题
This commit is contained in:
parent
0297c4444a
commit
15a491816a
|
@ -4,11 +4,9 @@ import (
|
|||
"context"
|
||||
"github.com/gorilla/websocket"
|
||||
"github.com/kercylan98/minotaur/utils/concurrent"
|
||||
"github.com/kercylan98/minotaur/utils/log"
|
||||
"github.com/panjf2000/gnet"
|
||||
"github.com/xtaci/kcp-go/v5"
|
||||
"net"
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
"sync"
|
||||
)
|
||||
|
@ -278,8 +276,9 @@ func (slf *Conn) writeLoop(wait *sync.WaitGroup) {
|
|||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
slf.Close()
|
||||
log.Error("WriteLoop", log.Any("Error", err))
|
||||
debug.PrintStack()
|
||||
// TODO: 以下代码是否需要?
|
||||
// log.Error("WriteLoop", log.Any("Error", err))
|
||||
// debug.PrintStack()
|
||||
}
|
||||
}()
|
||||
wait.Done()
|
||||
|
|
|
@ -551,13 +551,10 @@ func (slf *Server) ShuntChannelFreed(channelGuid int64) {
|
|||
|
||||
// pushMessage 向服务器中写入特定类型的消息,需严格遵守消息属性要求
|
||||
func (slf *Server) pushMessage(message *Message) {
|
||||
if slf.messagePool.IsClose() {
|
||||
if slf.messagePool.IsClose() || slf.isShutdown.Load() || !slf.OnMessageExecBeforeEvent(message) {
|
||||
slf.messagePool.Release(message)
|
||||
return
|
||||
}
|
||||
if slf.isShutdown.Load() || !slf.OnMessageExecBeforeEvent(message) {
|
||||
return
|
||||
}
|
||||
if slf.shuntChannels != nil && message.t == MessageTypePacket {
|
||||
conn := message.attrs[0].(*Conn)
|
||||
channelGuid, allowToCreate := slf.shuntMatcher(conn)
|
||||
|
|
Loading…
Reference in New Issue