From ca86524c922012b32e7a1420c54b49d96a6df3d6 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 8 Dec 2020 01:35:29 +0900 Subject: [PATCH] Add locking on join/leave operations --- .../RealtimeMultiplayer/MultiplayerRoom.cs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoom.cs b/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoom.cs index 1a02dab5e0..db3993255a 100644 --- a/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoom.cs +++ b/osu.Game/Online/RealtimeMultiplayer/MultiplayerRoom.cs @@ -26,16 +26,25 @@ namespace osu.Game.Online.RealtimeMultiplayer } } - public void Join(int user) + public MultiplayerRoomUser Join(int userId) { - lock (writeLock) - users.Add(new MultiplayerRoomUser(user)); + var user = new MultiplayerRoomUser(userId); + lock (writeLock) users.Add(user); + return user; } - public void Leave(int user) + public MultiplayerRoomUser Leave(int userId) { lock (writeLock) - users.RemoveAll(u => u.UserID == user); + { + var user = users.Find(u => u.UserID == userId); + + if (user == null) + return null; + + users.Remove(user); + return user; + } } } }