Skip to content

Commit

Permalink
Fixed configuration HttpReadTimeout ignored / not working #255
Browse files Browse the repository at this point in the history
  • Loading branch information
daniel-luberda committed Jul 5, 2016
1 parent e7a8c8d commit 5831966
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions source/FFImageLoading.Shared/Cache/DownloadCache.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
using System;
using System.Threading.Tasks;
using System.IO;
using System.Text;
using System.Collections.Generic;
using System.Net.Http;
using FFImageLoading.Helpers;
using FFImageLoading.Cache;
using System.Threading;

namespace FFImageLoading.Cache
Expand Down Expand Up @@ -98,21 +95,23 @@ private async Task<byte[]> DownloadBytesAndCacheAsync(string url, string filenam

private async Task<byte[]> DownloadAsync(string url, string filename, CancellationToken token)
{
int headersTimeout = ImageService.Instance.Config.HttpHeadersTimeout;
// Not used for the moment
// int readTimeout = ImageService.Instance.Config.HttpReadTimeout - headersTimeout;

using (var cancelHeadersToken = new CancellationTokenSource())
{
cancelHeadersToken.CancelAfter(TimeSpan.FromSeconds(headersTimeout));
cancelHeadersToken.CancelAfter(TimeSpan.FromSeconds(ImageService.Instance.Config.HttpHeadersTimeout));
using (var linkedHeadersToken = CancellationTokenSource.CreateLinkedTokenSource(token, cancelHeadersToken.Token))
{
using (var response = await DownloadHttpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead, linkedHeadersToken.Token).ConfigureAwait(false))
{
if (!response.IsSuccessStatusCode || response.Content == null)
return null;

return await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false);
using (var cancelReadTimeoutToken = new CancellationTokenSource())
{
cancelHeadersToken.CancelAfter(TimeSpan.FromSeconds(ImageService.Instance.Config.HttpReadTimeout));

return await Task.Run(async () => await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false),
cancelReadTimeoutToken.Token).ConfigureAwait(false);
}
}
}
}
Expand Down

0 comments on commit 5831966

Please sign in to comment.