Index: net/proxy/single_threaded_proxy_resolver.cc |
=================================================================== |
--- net/proxy/single_threaded_proxy_resolver.cc (revision 31195) |
+++ net/proxy/single_threaded_proxy_resolver.cc (working copy) |
@@ -125,9 +125,12 @@ |
void Start() { |
is_started_ = true; |
+ size_t load_log_bound = load_log_ ? load_log_->max_num_entries() : 0; |
+ |
coordinator_->thread()->message_loop()->PostTask( |
FROM_HERE, NewRunnableMethod(this, &Job::DoQuery, |
- coordinator_->resolver_.get())); |
+ coordinator_->resolver_.get(), |
+ load_log_bound)); |
} |
bool is_started() const { return is_started_; } |
@@ -149,9 +152,12 @@ |
~Job() {} |
// Runs on the worker thread. |
- void DoQuery(ProxyResolver* resolver) { |
- LoadLog* worker_log = new LoadLog; |
- worker_log->AddRef(); // Balanced in QueryComplete. |
+ void DoQuery(ProxyResolver* resolver, size_t load_log_bound) { |
+ LoadLog* worker_log = NULL; |
+ if (load_log_bound > 0) { |
+ worker_log = new LoadLog(load_log_bound); |
+ worker_log->AddRef(); // Balanced in QueryComplete. |
+ } |
int rv = resolver->GetProxyForURL(url_, &results_buf_, NULL, NULL, |
worker_log); |
@@ -165,9 +171,11 @@ |
void QueryComplete(int result_code, LoadLog* worker_log) { |
// Merge the load log that was generated on the worker thread, into the |
// main log. |
- if (load_log_) |
- load_log_->Append(worker_log); |
- worker_log->Release(); |
+ if (worker_log) { |
+ if (load_log_) |
+ load_log_->Append(worker_log); |
+ worker_log->Release(); |
+ } |
// The Job may have been cancelled after it was started. |
if (!was_cancelled()) { |