Chromium Code Reviews| Index: components/safe_browsing_db/v4_update_protocol_manager.cc |
| diff --git a/components/safe_browsing_db/v4_update_protocol_manager.cc b/components/safe_browsing_db/v4_update_protocol_manager.cc |
| index ae43b2e3b404fcbc3fd97af82a2cb15a0b1f9dc6..1098f7f09c0a0873be2acb8754dc36f7c5ed8d85 100644 |
| --- a/components/safe_browsing_db/v4_update_protocol_manager.cc |
| +++ b/components/safe_browsing_db/v4_update_protocol_manager.cc |
| @@ -70,6 +70,9 @@ static const int kV4TimerStartIntervalSecMin = 60; |
| // Maximum time, in seconds, from start up before we must issue an update query. |
| static const int kV4TimerStartIntervalSecMax = 300; |
| +// Maximum time, in seconds, to wait for a response to an update request. |
| +static const int kV4TimerUpdateWaitSecMax = 30; |
| + |
| // The default V4UpdateProtocolManagerFactory. |
| class V4UpdateProtocolManagerFactoryImpl |
| : public V4UpdateProtocolManagerFactory { |
| @@ -250,7 +253,6 @@ bool V4UpdateProtocolManager::ParseUpdateResponse( |
| base::TimeDelta::FromSeconds(minimum_wait_duration_seconds); |
| } |
| - // TODO(vakh): Do something useful with this response. |
| for (ListUpdateResponse& list_update_response : |
| *response.mutable_list_update_responses()) { |
| if (!list_update_response.has_platform_type()) { |
| @@ -295,7 +297,16 @@ void V4UpdateProtocolManager::IssueUpdateRequest() { |
| request_->SetLoadFlags(net::LOAD_DISABLE_CACHE); |
| request_->SetRequestContext(request_context_getter_.get()); |
| request_->Start(); |
| - // TODO(vakh): Handle request timeout. |
| + |
| + // Begin the update request timeout. |
| + timeout_timer_.Start(FROM_HERE, |
| + TimeDelta::FromSeconds(kV4TimerUpdateWaitSecMax), this, |
| + &V4UpdateProtocolManager::HandleTimeout); |
| +} |
| + |
| +void V4UpdateProtocolManager::HandleTimeout() { |
| + request_.reset(); |
|
Nathan Parker
2016/11/02 21:56:57
This should log some UMA value to indicate the req
vakh (use Gerrit instead)
2016/11/02 22:37:22
I thought about it but I couldn't find a good way
Nathan Parker
2016/11/05 00:32:21
Yes, you can use a UMA_HISTOGRAM just as a counter
|
| + IssueUpdateRequest(); |
|
Nathan Parker
2016/11/02 21:56:57
This will keep trying every 30 seconds. Is that wh
Scott Hess - ex-Googler
2016/11/02 22:05:08
Does the spec address this? I see language about
vakh (use Gerrit instead)
2016/11/02 22:37:22
Sure, that's possible. But what happens after that
vakh (use Gerrit instead)
2016/11/02 22:37:22
No, I don't see it: https://developers.google.com/
vakh (use Gerrit instead)
2016/11/08 17:51:40
Changed the code to schedule a normal update after
|
| } |
| // net::URLFetcherDelegate implementation ---------------------------------- |
| @@ -305,6 +316,8 @@ void V4UpdateProtocolManager::OnURLFetchComplete( |
| const net::URLFetcher* source) { |
| DCHECK(CalledOnValidThread()); |
| + timeout_timer_.Stop(); |
| + |
| int response_code = source->GetResponseCode(); |
| net::URLRequestStatus status = source->GetStatus(); |
| V4ProtocolManagerUtil::RecordHttpResponseOrErrorCode( |