mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-04-24 14:08:44 -04:00
Fix disposed exception when ffmpeg exits early in GetLiveHlsStream
This commit is contained in:
parent
ec35b8b425
commit
fdab8eebc9
1 changed files with 6 additions and 3 deletions
|
@ -267,6 +267,9 @@ namespace Jellyfin.Api.Controllers
|
|||
|
||||
// CTS lifecycle is managed internally.
|
||||
var cancellationTokenSource = new CancellationTokenSource();
|
||||
// Due to CTS.Token calling ThrowIfDisposed (https://github.com/dotnet/runtime/issues/29970) we have to "cache" the token
|
||||
// since it gets disposed when ffmpeg exits
|
||||
var cancellationToken = cancellationTokenSource.Token;
|
||||
using var state = await StreamingHelpers.GetStreamingState(
|
||||
streamingRequest,
|
||||
Request,
|
||||
|
@ -281,7 +284,7 @@ namespace Jellyfin.Api.Controllers
|
|||
_deviceManager,
|
||||
_transcodingJobHelper,
|
||||
TranscodingJobType,
|
||||
cancellationTokenSource.Token)
|
||||
cancellationToken)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
TranscodingJobDto? job = null;
|
||||
|
@ -290,7 +293,7 @@ namespace Jellyfin.Api.Controllers
|
|||
if (!System.IO.File.Exists(playlistPath))
|
||||
{
|
||||
var transcodingLock = _transcodingJobHelper.GetTranscodingLock(playlistPath);
|
||||
await transcodingLock.WaitAsync(cancellationTokenSource.Token).ConfigureAwait(false);
|
||||
await transcodingLock.WaitAsync(cancellationToken).ConfigureAwait(false);
|
||||
try
|
||||
{
|
||||
if (!System.IO.File.Exists(playlistPath))
|
||||
|
@ -317,7 +320,7 @@ namespace Jellyfin.Api.Controllers
|
|||
minSegments = state.MinSegments;
|
||||
if (minSegments > 0)
|
||||
{
|
||||
await HlsHelpers.WaitForMinimumSegmentCount(playlistPath, minSegments, _logger, cancellationTokenSource.Token).ConfigureAwait(false);
|
||||
await HlsHelpers.WaitForMinimumSegmentCount(playlistPath, minSegments, _logger, cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue