diff options
| author | Bond-009 <bond.009@outlook.com> | 2026-05-06 20:46:13 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-05-06 20:46:13 +0200 |
| commit | d1ab428476f961426841a0561036c59c3b93878e (patch) | |
| tree | d9e9b26a4b15e62f20514791db86f73d84644aad /Emby.Server.Implementations/Session/SessionManager.cs | |
| parent | 142b89eab533215b0005a99574b7855e73c537bd (diff) | |
| parent | 3a4dff8cc475e53691466dde2db9828b4d1b66aa (diff) | |
Merge pull request #16321 from WizardOfYendor1/fix/livetv-consumer-leak-negative-position-ticks
Fix live stream consumer leak on negative PositionTicks
Diffstat (limited to 'Emby.Server.Implementations/Session/SessionManager.cs')
| -rw-r--r-- | Emby.Server.Implementations/Session/SessionManager.cs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/Emby.Server.Implementations/Session/SessionManager.cs b/Emby.Server.Implementations/Session/SessionManager.cs index 582e8ce8dc..1782b53e10 100644 --- a/Emby.Server.Implementations/Session/SessionManager.cs +++ b/Emby.Server.Implementations/Session/SessionManager.cs @@ -1021,15 +1021,22 @@ namespace Emby.Server.Implementations.Session ArgumentNullException.ThrowIfNull(info); + var session = GetSession(info.SessionId); + + session.StopAutomaticProgress(); + if (info.PositionTicks.HasValue && info.PositionTicks.Value < 0) { + // Ensure live stream is cleaned up before throwing, to prevent tuner + // resource leaks when stalled clients report a negative PositionTicks. + if (!string.IsNullOrEmpty(info.LiveStreamId)) + { + await CloseLiveStreamIfNeededAsync(info.LiveStreamId, session.Id).ConfigureAwait(false); + } + throw new ArgumentOutOfRangeException(nameof(info), "The PlaybackStopInfo's PositionTicks was negative."); } - var session = GetSession(info.SessionId); - - session.StopAutomaticProgress(); - var libraryItem = info.ItemId.IsEmpty() ? null : GetNowPlayingItem(session, info.ItemId); |
