1) Configure an application to use a manifest and window.applicationCache 2) Download initial cache, everythings works fine. Server returns an ETag or Last-Modified date within the header. Also has headers to disable cacheing. 3) Cache is updated, but the one or more of the resources aren't 4) WebKit requests a resource sending up If-Modified-Since and If-None-Match header headers. 5) Server returns a 304 Not Modified. 6) WebKit makes another request (goes back to step 4) this process will go on in an infinite loop. You can see a more detailed overview at: http://new.efficientcoder.net/2009/06/webkitsafari-application-cache-work.html
<rdar://problem/7003461>
From code inspection, looks like we fail to call m_pendingEntries.remove() in ApplicationCacheGroup::didReceiveResponse() for 304 responses.
Created attachment 31855 [details] proposed fix
Committed <http://trac.webkit.org/changeset/45247>. I've slightly changed the code to look more like other code paths.
Tiger buildbot says this isn't quite fixed.
Created attachment 31930 [details] improve the fix
Committed <http://trac.webkit.org/changeset/45275>.