mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-15 08:25:09 +01:00
correctly clear disconnected sessions
This commit is contained in:
@@ -192,14 +192,6 @@ func handleMsgSysLogout(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func logoutPlayer(s *Session) {
|
func logoutPlayer(s *Session) {
|
||||||
if s.stage == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
s.server.BroadcastMHF(&mhfpacket.MsgSysDeleteUser {
|
|
||||||
CharID: s.charID,
|
|
||||||
}, s)
|
|
||||||
|
|
||||||
delete(s.server.sessions, s.rawConn)
|
delete(s.server.sessions, s.rawConn)
|
||||||
s.rawConn.Close()
|
s.rawConn.Close()
|
||||||
|
|
||||||
@@ -213,17 +205,6 @@ func logoutPlayer(s *Session) {
|
|||||||
panic(err)
|
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
|
var timePlayed int
|
||||||
_ = s.server.db.QueryRow("SELECT time_played FROM characters WHERE id = $1", s.charID).Scan(&timePlayed)
|
_ = 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)
|
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)
|
saveData, err := GetCharacterSaveData(s, s.charID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
|||||||
Reference in New Issue
Block a user