diff options
| author | Cody Robibero <cody@robibe.ro> | 2026-09-05 11:07:56 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-05 11:07:56 -0400 |
| commit | ffd61de4f356a5764c69fdd34a50214fa0912919 (patch) | |
| tree | 3d9e7ed04f411b1a748f71ea9988908e02491d81 /Emby.Server.Implementations | |
| parent | 441a05ac8827b15f261f200d4604c26ac0302be8 (diff) | |
| parent | 5acb200c02d1a4f884dd6f609c027d9187c17f29 (diff) | |
Merge pull request #17799 from fmarcac/fix/syncplay-stale-session-requests
Drop SyncPlay requests from sessions that left the group
Diffstat (limited to 'Emby.Server.Implementations')
| -rw-r--r-- | Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs b/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs index a2b9088708..b88ee33358 100644 --- a/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs +++ b/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs @@ -332,8 +332,11 @@ namespace Emby.Server.Implementations.SyncPlay // Group lock required as Group is not thread-safe. lock (group) { - // Make sure that session still belongs to this group. - if (_sessionToGroupMap.TryGetValue(session.Id, out var checkGroup) && !checkGroup.GroupId.Equals(group.GroupId)) + // Make sure that session still belongs to this group. The lookup can fail + // outright when the session left while this request was waiting on the group + // lock, which is exactly the case this re-check exists to catch. + if (!_sessionToGroupMap.TryGetValue(session.Id, out var checkGroup) + || !checkGroup.GroupId.Equals(group.GroupId)) { // Drop request. return; |
