prevent crash on enumerating nil stage

This commit is contained in:
wish
2022-07-23 12:04:24 +10:00
parent ebd0ea05ea
commit 9370440faa

View File

@@ -1,9 +1,9 @@
package channelserver
import (
"erupe-ce/common/byteframe"
"erupe-ce/common/stringsupport"
"erupe-ce/network/mhfpacket"
"erupe-ce/common/byteframe"
"go.uber.org/zap"
)
@@ -13,7 +13,10 @@ func handleMsgSysEnumerateClient(s *Session, p mhfpacket.MHFPacket) {
s.server.stagesLock.RLock()
stage, ok := s.server.stages[pkt.StageID]
if !ok {
s.logger.Fatal("Can't enumerate clients for stage that doesn't exist!", zap.String("stageID", pkt.StageID))
s.server.stagesLock.RUnlock()
s.logger.Warn("Can't enumerate clients for stage that doesn't exist!", zap.String("stageID", pkt.StageID))
doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4))
return
}
s.server.stagesLock.RUnlock()
@@ -29,12 +32,12 @@ func handleMsgSysEnumerateClient(s *Session, p mhfpacket.MHFPacket) {
}
}
case 2: // Ready
for cid, ready := range stage.reservedClientSlots {
if ready {
clients = append(clients, cid)
for cid, ready := range stage.reservedClientSlots {
if ready {
clients = append(clients, cid)
}
}
}
}
resp.WriteUint16(uint16(len(clients)))
for _, cid := range clients {
resp.WriteUint32(cid)