summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorbt <bt@rctt.net>2026-05-26 11:37:25 +0200
committerbt <bt@rctt.net>2026-05-26 11:38:01 +0200
commit5d689490cc90f0698802a01d2d058cfdc382a382 (patch)
tree3a7f86aefcaddae34dcc3687af06e87e5d754591 /server
parentc553d1d38de85cd014f0bd013a474a8e9e4f0e08 (diff)
downloadsolec-0.5.1.tar.gz
solec-0.5.1.zip
[daemon] Fix lock after sending a message to offline userv0.5.1
Diffstat (limited to 'server')
-rw-r--r--server/message.go3
-rw-r--r--server/remote.go3
2 files changed, 4 insertions, 2 deletions
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()