Index: webkit/appcache/appcache_url_request_job.cc |
=================================================================== |
--- webkit/appcache/appcache_url_request_job.cc (revision 57090) |
+++ webkit/appcache/appcache_url_request_job.cc (working copy) |
@@ -23,8 +23,8 @@ |
: URLRequestJob(request), storage_(storage), |
has_been_started_(false), has_been_killed_(false), |
delivery_type_(AWAITING_DELIVERY_ORDERS), |
- cache_id_(kNoCacheId), |
- is_fallback_(false), |
+ cache_id_(kNoCacheId), is_fallback_(false), |
+ cache_entry_not_found_(false), |
ALLOW_THIS_IN_INITIALIZER_LIST(read_callback_( |
this, &AppCacheURLRequestJob::OnReadComplete)) { |
DCHECK(storage_); |
@@ -122,8 +122,13 @@ |
NotifyHeadersComplete(); |
} else { |
- NotifyStartError( |
- URLRequestStatus(URLRequestStatus::FAILED, net::ERR_FAILED)); |
+ // A resource that is expected to be in the appcache is missing. |
+ // See http://code.google.com/p/chromium/issues/detail?id=50657 |
+ // Instead of failing the request, we restart the request. The retry |
+ // attempt will fallthru to the network instead of trying to load |
+ // from the appcache. |
+ cache_entry_not_found_ = true; |
+ NotifyRestartRequired(); |
} |
storage_ = NULL; // no longer needed |
} |