Skip to content

Commit 9eb9fc8

Browse files
Safe async disposal.
1 parent c50ca51 commit 9eb9fc8

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

src/ImageSharp.Web/Middleware/ImageSharpMiddleware.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,11 +316,33 @@ private async Task ProcessRequestAsync(HttpContext context, bool processRequest,
316316
}
317317
finally
318318
{
319-
outStream?.Dispose();
319+
await this.StreamDisposeAsync(outStream);
320320
}
321321
}
322322
}
323323

324+
private ValueTask StreamDisposeAsync(Stream stream)
325+
{
326+
if (stream is null)
327+
{
328+
return default;
329+
}
330+
331+
#if NETCOREAPP2_1
332+
try
333+
{
334+
stream.Dispose();
335+
return default;
336+
}
337+
catch (Exception ex)
338+
{
339+
return new ValueTask(Task.FromException(ex));
340+
}
341+
#else
342+
return stream.DisposeAsync();
343+
#endif
344+
}
345+
324346
private async Task SendResponseAsync(ImageContext imageContext, string key, Stream stream, ImageCacheMetadata metadata)
325347
{
326348
imageContext.ComprehendRequestHeaders(metadata.CacheLastWriteTimeUtc, stream.Length);

0 commit comments

Comments
 (0)