Fix output pipe hanging on unix sockets

This commit is contained in:
Malte Rosenbjerg 2020-10-27 00:49:49 +01:00
parent 6b1e411bfe
commit 9feb9f5a22
2 changed files with 4 additions and 6 deletions

View file

@ -38,12 +38,12 @@ public async Task During(CancellationToken cancellationToken = default)
{ {
try try
{ {
await ProcessDataAsync(cancellationToken ?? CancellationToken.None).ConfigureAwait(false); await ProcessDataAsync(cancellationToken);
} }
catch (TaskCanceledException) catch (TaskCanceledException)
{ {
} }
Post(); Pipe.Disconnect();
} }
protected abstract Task ProcessDataAsync(CancellationToken token); protected abstract Task ProcessDataAsync(CancellationToken token);

View file

@ -63,9 +63,8 @@ void OnCancelEvent(object sender, EventArgs args)
Task.WaitAll(instance.FinishedRunning().ContinueWith(t => Task.WaitAll(instance.FinishedRunning().ContinueWith(t =>
{ {
errorCode = t.Result; errorCode = t.Result;
cancellationTokenSource.Cancel();
}), _ffMpegArguments.During(cancellationTokenSource.Token));
_ffMpegArguments.Post(); _ffMpegArguments.Post();
}), _ffMpegArguments.During(cancellationTokenSource.Token));
} }
catch (Exception e) catch (Exception e)
{ {
@ -108,7 +107,7 @@ void OnCancelEvent(object sender, EventArgs args)
await Task.WhenAll(instance.FinishedRunning().ContinueWith(t => await Task.WhenAll(instance.FinishedRunning().ContinueWith(t =>
{ {
errorCode = t.Result; errorCode = t.Result;
cancellationTokenSource.Cancel(); _ffMpegArguments.Post();
}), _ffMpegArguments.During(cancellationTokenSource.Token)).ConfigureAwait(false); }), _ffMpegArguments.During(cancellationTokenSource.Token)).ConfigureAwait(false);
} }
catch (Exception e) catch (Exception e)
@ -118,7 +117,6 @@ await Task.WhenAll(instance.FinishedRunning().ContinueWith(t =>
finally finally
{ {
CancelEvent -= OnCancelEvent; CancelEvent -= OnCancelEvent;
_ffMpegArguments.Post();
} }
return HandleCompletion(throwOnError, errorCode, instance.ErrorData); return HandleCompletion(throwOnError, errorCode, instance.ErrorData);