diff --git a/server/channelserver/handlers_stage.go b/server/channelserver/handlers_stage.go index bb5f41ff7..e411365d3 100644 --- a/server/channelserver/handlers_stage.go +++ b/server/channelserver/handlers_stage.go @@ -135,7 +135,6 @@ func destructEmptyStages(s *Session) { func removeSessionFromStage(s *Session) { // Remove client from old stage. - s.stage.Lock() delete(s.stage.clients, s) // Delete old stage objects owned by the client. @@ -146,7 +145,6 @@ func removeSessionFromStage(s *Session) { delete(s.stage.objects, object.ownerCharID) } } - s.stage.Unlock() destructEmptyStages(s) destructEmptySemaphores(s) } diff --git a/server/channelserver/sys_stage.go b/server/channelserver/sys_stage.go index 4cd96a7f8..2c5cb5d23 100644 --- a/server/channelserver/sys_stage.go +++ b/server/channelserver/sys_stage.go @@ -69,6 +69,8 @@ func NewStage(ID string) *Stage { // BroadcastMHF queues a MHFPacket to be sent to all sessions in the stage. func (s *Stage) BroadcastMHF(pkt mhfpacket.MHFPacket, ignoredSession *Session) { + s.Lock() + defer s.Unlock() // Broadcast the data. for session := range s.clients { if session == ignoredSession {