aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Emby.Server.Implementations/Session/SessionManager.cs50
1 files changed, 22 insertions, 28 deletions
diff --git a/Emby.Server.Implementations/Session/SessionManager.cs b/Emby.Server.Implementations/Session/SessionManager.cs
index 329138feb..dc59a4523 100644
--- a/Emby.Server.Implementations/Session/SessionManager.cs
+++ b/Emby.Server.Implementations/Session/SessionManager.cs
@@ -625,43 +625,37 @@ namespace Emby.Server.Implementations.Session
private async void CheckForInactiveSteams(object state)
{
- var pausedSessions = Sessions.Where(i =>
+ var inactiveSessions = Sessions.Where(i =>
i.NowPlayingItem is not null
&& i.PlayState.IsPaused
- && i.LastPausedDate is not null)
- .ToList();
+ && (DateTime.UtcNow - i.LastPausedDate).Value.TotalMinutes > _config.Configuration.InactiveSessionThreshold);
- if (pausedSessions.Count > 0)
+ foreach (var session in inactiveSessions)
{
- var inactiveSessions = pausedSessions.Where(i => (DateTime.UtcNow - i.LastPausedDate).Value.TotalMinutes > _config.Configuration.InactiveSessionThreshold).ToList();
+ _logger.LogDebug("Session {Session} has been inactive for {InactiveTime} minutes. Stopping it.", session.Id, _config.Configuration.InactiveSessionThreshold);
- foreach (var session in inactiveSessions)
+ try
{
- _logger.LogDebug("Session {Session} has been inactive for {InactiveTime} minutes. Stopping it.", session.Id, _config.Configuration.InactiveSessionThreshold);
-
- try
- {
- await SendPlaystateCommand(
- session.Id,
- session.Id,
- new PlaystateRequest()
- {
- Command = PlaystateCommand.Stop,
- ControllingUserId = session.UserId.ToString(),
- SeekPositionTicks = session.PlayState?.PositionTicks
- },
- CancellationToken.None).ConfigureAwait(true);
- }
- catch (Exception ex)
- {
- _logger.LogDebug(ex, "Error calling SendPlaystateCommand for stopping inactive session {Session}.", session.Id);
- }
+ await SendPlaystateCommand(
+ session.Id,
+ session.Id,
+ new PlaystateRequest()
+ {
+ Command = PlaystateCommand.Stop,
+ ControllingUserId = session.UserId.ToString(),
+ SeekPositionTicks = session.PlayState?.PositionTicks
+ },
+ CancellationToken.None).ConfigureAwait(true);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogDebug(ex, "Error calling SendPlaystateCommand for stopping inactive session {Session}.", session.Id);
}
}
- var playingSessions = Sessions.Where(i => i.NowPlayingItem is not null)
- .ToList();
- if (playingSessions.Count == 0)
+ bool playingSessions = Sessions.Any(i => i.NowPlayingItem is not null);
+
+ if (!playingSessions)
{
StopInactiveCheckTimer();
}