X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/854a92fc2755ace61c405df335ddf69b02a3d932..ecb1fcd941a85162b9a799e59bb3b6b0bc1a5580:/hotline/server.go diff --git a/hotline/server.go b/hotline/server.go index 5b8aad0..06a0695 100644 --- a/hotline/server.go +++ b/hotline/server.go @@ -48,10 +48,13 @@ type Server struct { Clients map[uint16]*ClientConn fileTransfers map[[4]byte]*FileTransfer - Config *Config - ConfigDir string - Logger *zap.SugaredLogger - PrivateChats map[uint32]*PrivateChat + Config *Config + ConfigDir string + Logger *zap.SugaredLogger + + PrivateChatsMu sync.Mutex + PrivateChats map[uint32]*PrivateChat + NextGuestID *uint16 TrackerPassID [4]byte Stats *Stats @@ -698,15 +701,14 @@ func (s *Server) handleNewConnection(ctx context.Context, rwc io.ReadWriteCloser } func (s *Server) NewPrivateChat(cc *ClientConn) []byte { - s.mux.Lock() - defer s.mux.Unlock() + s.PrivateChatsMu.Lock() + defer s.PrivateChatsMu.Unlock() randID := make([]byte, 4) rand.Read(randID) data := binary.BigEndian.Uint32(randID[:]) s.PrivateChats[data] = &PrivateChat{ - Subject: "", ClientConn: make(map[uint16]*ClientConn), } s.PrivateChats[data].ClientConn[cc.uint16ID()] = cc @@ -766,7 +768,6 @@ func (s *Server) handleFileTransfer(ctx context.Context, rwc io.ReadWriter) erro switch fileTransfer.Type { case bannerDownload: if err := s.bannerDownload(rwc); err != nil { - panic(err) return err } case FileDownload: