aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/android/volley/CacheDispatcher.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/android/volley/CacheDispatcher.java')
-rw-r--r--src/main/java/com/android/volley/CacheDispatcher.java9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/main/java/com/android/volley/CacheDispatcher.java b/src/main/java/com/android/volley/CacheDispatcher.java
index be06d1f..12b1035 100644
--- a/src/main/java/com/android/volley/CacheDispatcher.java
+++ b/src/main/java/com/android/volley/CacheDispatcher.java
@@ -159,6 +159,15 @@ public class CacheDispatcher extends Thread {
new NetworkResponse(entry.data, entry.responseHeaders));
request.addMarker("cache-hit-parsed");
+ if (!response.isSuccess()) {
+ request.addMarker("cache-parsing-failed");
+ mCache.invalidate(request.getCacheKey(), true);
+ request.setCacheEntry(null);
+ if (!mWaitingRequestManager.maybeAddToWaitingRequests(request)) {
+ mNetworkQueue.put(request);
+ }
+ return;
+ }
if (!entry.refreshNeeded()) {
// Completely unexpired cache hit. Just deliver the response.
mDelivery.postResponse(request, response);