From 67122eb908bb998154ea83b42ee4489e46029f57 Mon Sep 17 00:00:00 2001 From: wish Date: Sun, 12 Feb 2023 15:56:04 +1100 Subject: [PATCH] rewrite broadcast functions --- server/channelserver/sys_channel_server.go | 13 +++---------- server/channelserver/sys_stage.go | 2 ++ 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/server/channelserver/sys_channel_server.go b/server/channelserver/sys_channel_server.go index e388149eb..b61fa5027 100644 --- a/server/channelserver/sys_channel_server.go +++ b/server/channelserver/sys_channel_server.go @@ -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) } } diff --git a/server/channelserver/sys_stage.go b/server/channelserver/sys_stage.go index 2c5cb5d23..435da4373 100644 --- a/server/channelserver/sys_stage.go +++ b/server/channelserver/sys_stage.go @@ -72,6 +72,8 @@ func (s *Stage) BroadcastMHF(pkt mhfpacket.MHFPacket, ignoredSession *Session) { s.Lock() defer s.Unlock() // Broadcast the data. + s.Lock() + defer s.Unlock() for session := range s.clients { if session == ignoredSession { continue