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:
From code inspection, looks like we fail to call m_pendingEntries.remove() in ApplicationCacheGroup::didReceiveResponse() for 304 responses.
Created attachment 31855 [details]
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