Skip to content

Commit

Permalink
Fixed the bug in Issue aliostad#142.
Browse files Browse the repository at this point in the history
  • Loading branch information
Reyhn3 committed Oct 29, 2015
1 parent b77fd60 commit ba93401
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 13 deletions.
21 changes: 13 additions & 8 deletions src/CacheCow.Client/CachingHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -477,14 +477,19 @@ protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage reques

// update only if server had a cachecontrol.
// TODO: merge CacheControl headers instead of replace
if (serverResponse.Headers.CacheControl != null && (!serverResponse.Headers.CacheControl.NoCache)) // added to cover issue #139
{
TraceWriter.WriteLine("CachingHandler.UpdateCachedResponse - CacheControl: " + serverResponse.Headers.CacheControl.ToString(), TraceLevel.Verbose);
cachedResponse.Headers.CacheControl = serverResponse.Headers.CacheControl;
cachedResponse.Headers.Date = DateTimeOffset.UtcNow; // very important
store.AddOrUpdate(cacheKey, cachedResponse);
}
}
if (serverResponse.Headers.CacheControl != null && (!serverResponse.Headers.CacheControl.NoCache)) // added to cover issue #139
{
TraceWriter.WriteLine("CachingHandler.UpdateCachedResponse - CacheControl: " + serverResponse.Headers.CacheControl.ToString(), TraceLevel.Verbose);
cachedResponse.Headers.CacheControl = serverResponse.Headers.CacheControl;
}
else
{
TraceWriter.WriteLine("CachingHandler.UpdateCachedResponse - CacheControl missing from server. Applying sliding expiration. Date => " + DateTimeOffset.UtcNow, TraceLevel.Verbose);
}

cachedResponse.Headers.Date = DateTimeOffset.UtcNow; // very important
store.AddOrUpdate(cacheKey, cachedResponse);
}

private static void DoCacheValidationForGet(HttpRequestMessage request, CacheCowHeader cacheCowHeader,
HttpResponseMessage cachedResponse)
Expand Down
9 changes: 4 additions & 5 deletions test/CacheCow.Client.Tests/CachingHandlerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,8 @@ public void Get_Must_Revalidate_Etag_NotModified()
responseFromCache.Content.Headers.Expires = DateTime.Now.Subtract(TimeSpan.FromSeconds(10));
var responseFromServer = new HttpResponseMessage(HttpStatusCode.NotModified);
_messageHandler.Response = responseFromServer;
_cacheStore.Expect(x => x.TryGetValue(Arg<CacheKey>.Is.Anything,
out Arg<HttpResponseMessage>.Out(responseFromCache).Dummy)).Return(true);
_cacheStore.Expect(x => x.TryGetValue(Arg<CacheKey>.Is.Anything, out Arg<HttpResponseMessage>.Out(responseFromCache).Dummy)).Return(true);
_cacheStore.Expect(x => x.AddOrUpdate(Arg<CacheKey>.Is.Anything, Arg<HttpResponseMessage>.Is.Anything));

_mockRepository.ReplayAll();

Expand Down Expand Up @@ -208,8 +208,8 @@ public void Get_Must_Revalidate_Expires_NotModified()

var responseFromServer = new HttpResponseMessage(HttpStatusCode.NotModified);
_messageHandler.Response = responseFromServer;
_cacheStore.Expect(x => x.TryGetValue(Arg<CacheKey>.Is.Anything,
out Arg<HttpResponseMessage>.Out(responseFromCache).Dummy)).Return(true);
_cacheStore.Expect(x => x.TryGetValue(Arg<CacheKey>.Is.Anything, out Arg<HttpResponseMessage>.Out(responseFromCache).Dummy)).Return(true);
_cacheStore.Expect(x => x.AddOrUpdate(Arg<CacheKey>.Is.Anything, Arg<HttpResponseMessage>.Is.Anything));

_mockRepository.ReplayAll();

Expand Down Expand Up @@ -335,7 +335,6 @@ public void Get_NoCache_Expires_ResultsInValidation()

}


[Test]
public void Get_NoMustRevalidate_NoMustRevalidateByDefault_Expires_GetFromCache()
{
Expand Down

0 comments on commit ba93401

Please sign in to comment.