RESOLVED FIXED 113542
Resources are never revalidated/reloaded if a cached response exists on disk.
https://bugs.webkit.org/show_bug.cgi?id=113542
Summary Resources are never revalidated/reloaded if a cached response exists on disk.
Brady Eidson
Reported 2013-03-28 15:50:04 PDT
Resources are never revalidated if a cached response exists on disk. The "try to get an mmap handle to a cached response on disk" code happened in didReceiveResponse which short circuited any chance of a new load actually happening. That's crazy. It should happen in didReceiveData once the new load starts filtering in. That is the point where we can say for sure whether we're seeing cached data or receiving new data. In radar as <rdar://problem/13479890>
Attachments
Patch v1 (9.44 KB, patch)
2013-03-28 15:59 PDT, Brady Eidson
ap: review+
Brady Eidson
Comment 1 2013-03-28 15:59:06 PDT
Created attachment 195665 [details] Patch v1
Brady Eidson
Comment 2 2013-03-28 16:07:42 PDT
Andy Estes
Comment 3 2013-03-28 16:08:37 PDT
Comment on attachment 195665 [details] Patch v1 View in context: https://bugs.webkit.org/attachment.cgi?id=195665&action=review > Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:227 > + // Since we're delivering this resource by ourselves all at once, we'll abort the resource handle since we don't need anymore callbacks from ResourceHandle. any more, not anymore > Source/WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm:47 > + typedef CFDataRef (*functionType)(CFCachedURLResponseRef); > + static functionType softGetMemMappedData = (functionType) dlsym(CFNetworkLibrary(), "_CFCachedURLResponseGetMemMappedData"); Can't you use SOFT_LINK_OPTIONAL()? > Source/WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm:57 > + typedef CFBooleanRef (*functionType)(CFURLCacheRef cache, CFDataRef data); > + static functionType softLinkIsCacheMMAPedData = (functionType) dlsym(CFNetworkLibrary(), "_CFURLCacheIsResponseDataMemMapped"); Ditto.
Tim Horton
Comment 4 2013-03-28 16:09:15 PDT
Comment on attachment 195665 [details] Patch v1 View in context: https://bugs.webkit.org/attachment.cgi?id=195665&action=review >> Source/WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm:57 >> +static bool CFURLCacheIsMemMappedData(CFURLCacheRef cache, CFDataRef data) >> +{ >> + typedef CFBooleanRef (*functionType)(CFURLCacheRef cache, CFDataRef data); >> + static functionType softLinkIsCacheMMAPedData = (functionType) dlsym(CFNetworkLibrary(), "_CFURLCacheIsResponseDataMemMapped"); > > Ditto. It's weird to me that we're wrapping this function and stealing their prefix but not using the same exact name.
Note You need to log in before you can comment on or make changes to this bug.