diff options
| author | fmarcac <188743521+fmarcac@users.noreply.github.com> | 2026-09-05 14:23:37 +0200 |
|---|---|---|
| committer | fmarcac <188743521+fmarcac@users.noreply.github.com> | 2026-09-05 14:23:37 +0200 |
| commit | 5acb200c02d1a4f884dd6f609c027d9187c17f29 (patch) | |
| tree | 94e45e0d25823cdca5b0cd2b0c6d18ea212e933c /Emby.Server.Implementations | |
| parent | c80f05fad100433077c3011baeebb52271939823 (diff) | |
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 b45d754554..9b12c68ec1 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; |
