Changeset 194337 in webkit
- Timestamp:
- Dec 21, 2015 11:54:46 AM (8 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r194336 r194337 1 2015-12-21 Antti Koivisto <antti@apple.com> 2 3 Limit cached redirect chain length 4 https://bugs.webkit.org/show_bug.cgi?id=152477 5 6 Reviewed by Andreas Kling. 7 8 * http/tests/cache/disk-cache/redirect-chain-limits-expected.txt: Added. 9 * http/tests/cache/disk-cache/redirect-chain-limits.html: Added. 10 * http/tests/cache/disk-cache/resources/redirect-chain.phpl: Added. 11 1 12 2015-12-21 Ryan Haddad <ryanhaddad@apple.com> 2 13 -
trunk/Source/WebKit2/ChangeLog
r194330 r194337 1 2015-12-21 Antti Koivisto <antti@apple.com> 2 3 Limit cached redirect chain length 4 https://bugs.webkit.org/show_bug.cgi?id=152477 5 6 Reviewed by Andreas Kling. 7 8 Networking layer prevents cycles and limits the redirect chain length so creating cache cycles is difficult. 9 For robustness the network cache should still limit the maximum redirect chain length. 10 11 This patch adds a limit of five redirects both when storing and retrieving cache entries. 12 13 * NetworkProcess/NetworkResourceLoader.cpp: 14 (WebKit::NetworkResourceLoader::canUseCache): 15 (WebKit::NetworkResourceLoader::canUseCachedRedirect): 16 (WebKit::NetworkResourceLoader::willSendRedirectedRequest): 17 (WebKit::NetworkResourceLoader::continueWillSendRequest): 18 (WebKit::NetworkResourceLoader::dispatchWillSendRequestForCacheEntry): 19 * NetworkProcess/NetworkResourceLoader.h: 20 1 21 2015-12-21 Dan Bernstein <mitz@apple.com> 2 22 -
trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp
r194313 r194337 117 117 if (!request.url().protocolIsInHTTPFamily()) 118 118 return false; 119 120 return true; 121 } 122 123 bool NetworkResourceLoader::canUseCachedRedirect(const ResourceRequest& request) const 124 { 125 if (!canUseCache(request)) 126 return false; 127 // Limit cached redirects to avoid cycles and other trouble. 128 // Networking layer follows over 30 redirects but caching that many seems unnecessary. 129 static const unsigned maximumCachedRedirectCount { 5 }; 130 if (m_redirectCount > maximumCachedRedirectCount) 131 return false; 132 119 133 return true; 120 134 } … … 385 399 void NetworkResourceLoader::willSendRedirectedRequest(const ResourceRequest& request, const WebCore::ResourceRequest& redirectRequest, const ResourceResponse& redirectResponse) 386 400 { 401 ++m_redirectCount; 402 387 403 if (isSynchronous()) { 388 404 ResourceRequest overridenRequest = redirectRequest; … … 401 417 402 418 #if ENABLE(NETWORK_CACHE) 403 if (canUseCache (request))419 if (canUseCachedRedirect(request)) 404 420 NetworkCache::singleton().storeRedirect(request, redirectResponse, redirectRequest); 405 421 #else … … 413 429 if (m_isWaitingContinueWillSendRequestForCachedRedirect) { 414 430 LOG(NetworkCache, "(NetworkProcess) Retrieving cached redirect"); 415 if (canUseCache(newRequest)) 431 432 if (canUseCachedRedirect(newRequest)) 416 433 retrieveCacheEntry(newRequest); 417 434 else … … 536 553 LOG(NetworkCache, "(NetworkProcess) Executing cached redirect"); 537 554 555 ++m_redirectCount; 538 556 sendAbortingOnFailure(Messages::WebResourceLoader::WillSendRequest(*entry->redirectRequest(), entry->response())); 539 557 m_isWaitingContinueWillSendRequestForCachedRedirect = true; -
trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h
r194313 r194337 62 62 NetworkLoad* networkLoad() const { return m_networkLoad.get(); } 63 63 64 #if ENABLE(NETWORK_CACHE)65 bool canUseCache(const WebCore::ResourceRequest&) const;66 #endif67 68 64 void start(); 69 65 void abort(); … … 117 113 118 114 #if ENABLE(NETWORK_CACHE) 115 bool canUseCache(const WebCore::ResourceRequest&) const; 116 bool canUseCachedRedirect(const WebCore::ResourceRequest&) const; 117 119 118 void retrieveCacheEntry(const WebCore::ResourceRequest&); 120 119 void didRetrieveCacheEntry(std::unique_ptr<NetworkCache::Entry>); … … 150 149 size_t m_bufferedDataEncodedDataLength { 0 }; 151 150 RefPtr<WebCore::SharedBuffer> m_bufferedData; 151 unsigned m_redirectCount { 0 }; 152 152 153 153 std::unique_ptr<SynchronousLoadData> m_synchronousLoadData;
Note: See TracChangeset
for help on using the changeset viewer.