commit b9b4931bdea064808ef6df36772d1f8b6fcdb492
parent 2affc8be94b75793b3a2a3f841d87972a7499872
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Tue, 23 May 2023 07:06:08 -0700
fix concurrent issue
Diffstat:
1 file changed, 4 insertions(+), 0 deletions(-)
diff --git a/pkg/managers/managers.go b/pkg/managers/managers.go
@@ -109,13 +109,17 @@ func (m *ActiveUsersManager) UpdateUserInRoom(room database.ChatRoom, userInfo U
}
roomKey := getRoomKey(room)
usersMap := m.getRoomUsersMap(roomKey)
+
+ m.RLock()
prevUserInfo := usersMap[userInfo.Username]
+ m.RUnlock()
if prevUserInfo.LastActivity == nil && userInfo.LastActivity == nil {
now := time.Now()
userInfo.LastActivity = &now
} else if userInfo.LastActivity == nil {
userInfo.LastActivity = prevUserInfo.LastActivity
}
+
m.Lock()
usersMap[userInfo.Username] = userInfo
m.activeUsers[roomKey] = usersMap