diff options
author | paulg@google.com <paulg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-16 23:51:44 +0000 |
---|---|---|
committer | paulg@google.com <paulg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-16 23:51:44 +0000 |
commit | cb1cdf49dfef2a86f5616be04f07381ec00ce1b9 (patch) | |
tree | 2025f963a18865310e35935f4b654748b5aaee64 /chrome/browser/safe_browsing/protocol_manager.cc | |
parent | 4b311b6608df484304a6524c2870b9b49ea020f4 (diff) | |
download | chromium_src-cb1cdf49dfef2a86f5616be04f07381ec00ce1b9.zip chromium_src-cb1cdf49dfef2a86f5616be04f07381ec00ce1b9.tar.gz chromium_src-cb1cdf49dfef2a86f5616be04f07381ec00ce1b9.tar.bz2 |
End the SafeBrowsing update cycle when the update response
contains no chunk URLs (i.e. the client is up to date).
We currently don't handle this case properly, which results
in a DCHECK being hit.
BUG=6049 (http://crbug.com/6049)
Review URL: http://codereview.chromium.org/18181
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8244 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/safe_browsing/protocol_manager.cc')
-rw-r--r-- | chrome/browser/safe_browsing/protocol_manager.cc | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/chrome/browser/safe_browsing/protocol_manager.cc b/chrome/browser/safe_browsing/protocol_manager.cc index 13b4968..5086e22 100644 --- a/chrome/browser/safe_browsing/protocol_manager.cc +++ b/chrome/browser/safe_browsing/protocol_manager.cc @@ -222,15 +222,29 @@ void SafeBrowsingProtocolManager::OnURLFetchComplete( UpdateFinished(false); } - if (request_type_ == CHUNK_REQUEST && parsed_ok) { - chunk_request_urls_.pop_front(); - } else if (request_type_ == GETKEY_REQUEST && initial_request_) { - // This is the first request we've made this session. Now that we have - // the keys, do the regular update request. - initial_request_ = false; - GetNextUpdate(); - return; + switch (request_type_) { + case CHUNK_REQUEST: + if (parsed_ok) + chunk_request_urls_.pop_front(); + break; + case GETKEY_REQUEST: + if (initial_request_) { + // This is the first request we've made this session. Now that we + // have the keys, do the regular update request. + initial_request_ = false; + GetNextUpdate(); + return; + } + break; + case UPDATE_REQUEST: + if (chunk_request_urls_.empty() && parsed_ok) { + // We are up to date since the servers gave us nothing new, so we + // are done with this update cycle. + UpdateFinished(true); + } + break; } + } else if (response_code >= 300) { // The SafeBrowsing service error: back off. must_back_off = true; |