fix: 修复 server 包 RegMessageExecBeforeEvent 函数导致内存泄露的问题

This commit is contained in:
kercylan98 2023-09-05 10:57:44 +08:00
parent 0297c4444a
commit 15a491816a
2 changed files with 4 additions and 8 deletions

View File

@ -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()

View File

@ -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)