bug漏洞修复;1.processtrigger 漏加锁;2message_mgr空指针报错

This commit is contained in:
hahwu 2026-01-26 10:19:05 +08:00
parent 167e5dd28c
commit e9d1565115
2 changed files with 18 additions and 1 deletions

View File

@ -181,16 +181,18 @@ func HandleClientReq(args []interface{}) {
db.UpdateAccountInfoDeviceToDb(accountInfo)
p, _ := internal.Agents.Load(a)
if p != nil {
p.(*Player).lock.Lock() //加锁
defer p.(*Player).lock.Unlock() //解锁
log.Debug("player %s login success", detail.UserName)
p.(*Player).PlayMod.getBaseMod().DiviceId = detail.Device //加锁
p.(*Player).PushClientRes(ResLogin)
p.(*Player).LoginBackData()
p.(*Player).TeLog("Login_log", nil)
p.(*Player).ProcessTrigger()
}
if newPlayer {
log.Debug("uid : %d, init user process : %s, execTime : %v , isNew: %v", p.(*Player).M_DwUin, m.GetFunc(), time.Since(start), newPlayer)
}
p.(*Player).ProcessTrigger()
case "ReqServerTime": // 获取服务器时间
detail := &msg.ReqServerTime{}
proto.Unmarshal(buf, detail)

View File

@ -286,6 +286,9 @@ func ComsumerMsgHandler(data *msg.Msg) (interface{}, error) {
messages.mu.Lock()
defer messages.mu.Unlock()
for i, msgItem := range messages.Messages {
if msgItem == nil {
continue
}
if msgItem.UniKey == data.UniKey {
// 删除消息
messages.Messages = append(messages.Messages[:i], messages.Messages[i+1:]...)
@ -766,6 +769,12 @@ func FriendMgrSend(m1 *msg.Msg) error {
// 异步发送消息到指定节点 节点不在线则保存消息
func sendMessageAsync(m *msg.Msg, node int) error {
defer func() {
if r := recover(); r != nil {
log.Error("message_mgr fatal : sendMessageAsync err:%s", fmt.Sprintf("fatal : %s", r))
GoUtil.SendFeishuFatal(0, "sendMessageAsync", fmt.Sprintf("fatal : %s", r))
}
}()
log.Debug("[Middleware] Send Async message to node: %d, message: %v", node, m)
err := mergeCluster.SendServerMsg(m, node)
if err != nil && GoUtil.InArray(m.HandleType, save_msg_type) {
@ -778,6 +787,12 @@ func sendMessageAsync(m *msg.Msg, node int) error {
// 同步消息到指定节点 节点不在线则保存消息
func sendMessageSync(m *msg.Msg, node int) (*msg.Msg, error) {
defer func() {
if r := recover(); r != nil {
log.Error("message_mgr fatal : sendMessageSync err:%s", fmt.Sprintf("fatal : %s", r))
GoUtil.SendFeishuFatal(0, "sendMessageSync", fmt.Sprintf("fatal : %s", r))
}
}()
log.Debug("[Middleware] Send Sync message to node: %d, message: %v", node, m)
msg, err := mergeCluster.CallServerMsg(m, node)
if err != nil && conf.Server.ServerType == "center" && GoUtil.InArray(m.HandleType, save_msg_type) {