correctly clear disconnected sessions

This commit is contained in:
wish
2022-07-17 04:32:10 +10:00
parent 9370a4bd45
commit 3f82259583

View File

@@ -192,14 +192,6 @@ func handleMsgSysLogout(s *Session, p mhfpacket.MHFPacket) {
}
func logoutPlayer(s *Session) {
if s.stage == nil {
return
}
s.server.BroadcastMHF(&mhfpacket.MsgSysDeleteUser {
CharID: s.charID,
}, s)
delete(s.server.sessions, s.rawConn)
s.rawConn.Close()
@@ -213,17 +205,6 @@ func logoutPlayer(s *Session) {
panic(err)
}
s.server.Lock()
for _, stage := range s.server.stages {
if _, exists := stage.reservedClientSlots[s.charID]; exists {
delete(stage.reservedClientSlots, s.charID)
}
}
s.server.Unlock()
removeSessionFromSemaphore(s)
removeSessionFromStage(s)
var timePlayed int
_ = s.server.db.QueryRow("SELECT time_played FROM characters WHERE id = $1", s.charID).Scan(&timePlayed)
@@ -244,6 +225,25 @@ func logoutPlayer(s *Session) {
panic(err)
}
if s.stage == nil {
return
}
s.server.BroadcastMHF(&mhfpacket.MsgSysDeleteUser {
CharID: s.charID,
}, s)
s.server.Lock()
for _, stage := range s.server.stages {
if _, exists := stage.reservedClientSlots[s.charID]; exists {
delete(stage.reservedClientSlots, s.charID)
}
}
s.server.Unlock()
removeSessionFromSemaphore(s)
removeSessionFromStage(s)
saveData, err := GetCharacterSaveData(s, s.charID)
if err != nil {
panic(err)