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