Merge pull request #62 from ZeruLight/fix/stage-concurrent-map

This commit is contained in:
wish
2023-03-06 11:47:10 +11:00
committed by GitHub
3 changed files with 5 additions and 13 deletions

View File

@@ -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)
}

View File

@@ -269,6 +269,8 @@ func (s *Server) manageSessions() {
// BroadcastMHF queues a MHFPacket to be sent to all sessions.
func (s *Server) BroadcastMHF(pkt mhfpacket.MHFPacket, ignoredSession *Session) {
// Broadcast the data.
s.Lock()
defer s.Unlock()
for _, session := range s.sessions {
if session == ignoredSession {
continue
@@ -291,16 +293,7 @@ func (s *Server) WorldcastMHF(pkt mhfpacket.MHFPacket, ignoredSession *Session,
if c == ignoredChannel {
continue
}
for _, session := range c.sessions {
if session == ignoredSession {
continue
}
bf := byteframe.NewByteFrame()
bf.WriteUint16(uint16(pkt.Opcode()))
pkt.Build(bf, session.clientContext)
bf.WriteUint16(0x0010)
session.QueueSendNonBlocking(bf.Data())
}
c.BroadcastMHF(pkt, ignoredSession)
}
}

View File

@@ -69,7 +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) {
// Broadcast the data.
s.Lock()
defer s.Unlock()
for session := range s.clients {
if session == ignoredSession {
continue