Browse Source

fix edge case where channel would fail to start (#1611)

pull/1612/head
Jason Dove 1 year ago committed by GitHub
parent
commit
356e0f101a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 19
      ErsatzTV.Core/FFmpeg/FFmpegSegmenterService.cs
  2. 2
      ErsatzTV/Controllers/IptvController.cs

19
ErsatzTV.Core/FFmpeg/FFmpegSegmenterService.cs

@ -17,7 +17,24 @@ public class FFmpegSegmenterService(ILogger<FFmpegSegmenterService> logger) : IF @@ -17,7 +17,24 @@ public class FFmpegSegmenterService(ILogger<FFmpegSegmenterService> logger) : IF
public bool TryAddWorker(string channelNumber, IHlsSessionWorker worker)
{
bool result = _sessionWorkers.TryAdd(channelNumber, worker);
var result = false;
// check for worker
if (TryGetWorker(channelNumber, out IHlsSessionWorker existing))
{
// if worker is null, pretend we added it
if (existing is null)
{
result = true;
}
// if worker is not null, we cannot add one (so result should stay false)
}
else
{
// worker does not exist, so try adding a null one
result = _sessionWorkers.TryAdd(channelNumber, worker);
}
if (result)
{

2
ErsatzTV/Controllers/IptvController.cs

@ -142,7 +142,7 @@ public class IptvController : ControllerBase @@ -142,7 +142,7 @@ public class IptvController : ControllerBase
{
// _logger.LogDebug("Checking for session worker for channel {Channel}", channelNumber);
if (_ffmpegSegmenterService.TryGetWorker(channelNumber, out IHlsSessionWorker worker))
if (_ffmpegSegmenterService.TryGetWorker(channelNumber, out IHlsSessionWorker worker) && worker is not null)
{
// _logger.LogDebug("Trimming playlist for channel {Channel}", channelNumber);

Loading…
Cancel
Save