Browse Source

Remove EOF counter

cvium 4 years ago
parent
commit
146cad6150
1 changed files with 16 additions and 18 deletions
  1. 16 18
      Jellyfin.Api/Helpers/ProgressiveFileStream.cs

+ 16 - 18
Jellyfin.Api/Helpers/ProgressiveFileStream.cs

@@ -79,13 +79,10 @@ namespace Jellyfin.Api.Helpers
         /// <inheritdoc />
         public override async Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
         {
-            var eofCount = 0;
-            const int EmptyReadLimit = 20;
-
             int totalBytesRead = 0;
             int remainingBytesToRead = count;
 
-            while (eofCount < EmptyReadLimit && remainingBytesToRead > 0)
+            while (remainingBytesToRead > 0)
             {
                 cancellationToken.ThrowIfCancellationRequested();
                 int bytesRead;
@@ -109,20 +106,15 @@ namespace Jellyfin.Api.Helpers
                         _job.BytesDownloaded = Math.Max(_job.BytesDownloaded ?? _bytesWritten, _bytesWritten);
                     }
                 }
-
-                if (bytesRead == 0)
+                else
                 {
                     if (_job == null || _job.HasExited)
                     {
-                        eofCount++;
+                        break;
                     }
 
                     await Task.Delay(100, cancellationToken).ConfigureAwait(false);
                 }
-                else
-                {
-                    eofCount = 0;
-                }
             }
 
             return totalBytesRead;
@@ -148,17 +140,23 @@ namespace Jellyfin.Api.Helpers
                 return;
             }
 
-            if (disposing)
+            try
             {
-                _fileStream.Dispose();
-
-                if (_job != null)
+                if (disposing)
                 {
-                    _transcodingJobHelper.OnTranscodeEndRequest(_job);
+                    _fileStream.Dispose();
+
+                    if (_job != null)
+                    {
+                        _transcodingJobHelper.OnTranscodeEndRequest(_job);
+                    }
                 }
             }
-
-            _disposed = true;
+            finally
+            {
+                _disposed = true;
+                base.Dispose(disposing);
+            }
         }
     }
 }