From 5d689490cc90f0698802a01d2d058cfdc382a382 Mon Sep 17 00:00:00 2001 From: bt Date: Tue, 26 May 2026 11:37:25 +0200 Subject: [daemon] Fix lock after sending a message to offline user --- server/message.go | 3 ++- server/remote.go | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'server') diff --git a/server/message.go b/server/message.go index 801a4cf..a529025 100644 --- a/server/message.go +++ b/server/message.go @@ -111,12 +111,13 @@ func (s *Server) handleOutboundMessage(addr core.Addr, msg core.Message) error { func (s *Server) handleUserMessage(addr core.Addr, sender net.Conn, msg core.Message) error { s.usersMu.RLock() + defer s.usersMu.RUnlock() + user, ok := s.users[addr.String()] if !ok { log.Println("user not found") return core.Send(sender, core.Error{core.ErrorNotFound}) } - s.usersMu.RUnlock() return user.Send(sender, msg) } diff --git a/server/remote.go b/server/remote.go index 70e4734..0a782e3 100644 --- a/server/remote.go +++ b/server/remote.go @@ -26,11 +26,12 @@ func (s *Server) handleServerConn(conn net.Conn) { } s.serversMu.RLock() + defer s.serversMu.RUnlock() + if _, ok := s.servers[name]; ok { log.Println("server already connected") return } - s.serversMu.RUnlock() rs := NewRemoteServer(name, conn) s.serversMu.Lock() -- cgit v1.2.3