Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(287)

Side by Side Diff: net/http/disk_based_cert_cache.cc

Issue 432053002: DiskBasedCertCache method name change + readability fixes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/disk_based_cert_cache.h" 5 #include "net/http/disk_based_cert_cache.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 CACHE_RESULT_MAX 43 CACHE_RESULT_MAX
44 }; 44 };
45 45
46 void RecordCacheResult(CacheResult result) { 46 void RecordCacheResult(CacheResult result) {
47 UMA_HISTOGRAM_ENUMERATION( 47 UMA_HISTOGRAM_ENUMERATION(
48 "DiskBasedCertCache.CertIoCacheResult", result, CACHE_RESULT_MAX); 48 "DiskBasedCertCache.CertIoCacheResult", result, CACHE_RESULT_MAX);
49 } 49 }
50 50
51 } // namespace 51 } // namespace
52 52
53 // WriteWorkers represent pending Set jobs in the DiskBasedCertCache. Each 53 // WriteWorkers represent pending SetCertificate jobs in the DiskBasedCertCache.
54 // certificate requested to be cached is assigned a Writeworker on a one-to-one 54 // Each certificate requested to be stored is assigned a WriteWorker.
55 // basis. The same certificate should not have multiple WriteWorkers at the same 55 // The same certificate should not have multiple WriteWorkers at the same
56 // time; instead, add a user callback to the existing WriteWorker. 56 // time; instead, add a user callback to the existing WriteWorker.
57 class DiskBasedCertCache::WriteWorker { 57 class DiskBasedCertCache::WriteWorker {
58 public: 58 public:
59 // |backend| is the backend to store |certificate| in, using 59 // |backend| is the backend to store |certificate| in, using
60 // |key| as the key for the disk_cache::Entry. 60 // |key| as the key for the disk_cache::Entry.
61 // |cleanup_callback| is called to clean up this ReadWorker, 61 // |cleanup_callback| is called to clean up this ReadWorker,
62 // regardless of success or failure. 62 // regardless of success or failure.
63 WriteWorker(disk_cache::Backend* backend, 63 WriteWorker(disk_cache::Backend* backend,
64 const std::string& key, 64 const std::string& key,
65 X509Certificate::OSCertHandle cert_handle, 65 X509Certificate::OSCertHandle cert_handle,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 105
106 // Invokes all of the |user_callbacks_| 106 // Invokes all of the |user_callbacks_|
107 void RunCallbacks(int rv); 107 void RunCallbacks(int rv);
108 108
109 disk_cache::Backend* backend_; 109 disk_cache::Backend* backend_;
110 const X509Certificate::OSCertHandle cert_handle_; 110 const X509Certificate::OSCertHandle cert_handle_;
111 std::string key_; 111 std::string key_;
112 bool canceled_; 112 bool canceled_;
113 113
114 disk_cache::Entry* entry_; 114 disk_cache::Entry* entry_;
115 State state_; 115 State next_state_;
116 scoped_refptr<IOBuffer> buffer_; 116 scoped_refptr<IOBuffer> buffer_;
117 int io_buf_len_; 117 int io_buf_len_;
118 118
119 base::Closure cleanup_callback_; 119 base::Closure cleanup_callback_;
120 std::vector<SetCallback> user_callbacks_; 120 std::vector<SetCallback> user_callbacks_;
121 CompletionCallback io_callback_; 121 CompletionCallback io_callback_;
122 }; 122 };
123 123
124 DiskBasedCertCache::WriteWorker::WriteWorker( 124 DiskBasedCertCache::WriteWorker::WriteWorker(
125 disk_cache::Backend* backend, 125 disk_cache::Backend* backend,
126 const std::string& key, 126 const std::string& key,
127 X509Certificate::OSCertHandle cert_handle, 127 X509Certificate::OSCertHandle cert_handle,
128 const base::Closure& cleanup_callback) 128 const base::Closure& cleanup_callback)
129 : backend_(backend), 129 : backend_(backend),
130 cert_handle_(X509Certificate::DupOSCertHandle(cert_handle)), 130 cert_handle_(X509Certificate::DupOSCertHandle(cert_handle)),
131 key_(key), 131 key_(key),
132 canceled_(false), 132 canceled_(false),
133 entry_(NULL), 133 entry_(NULL),
134 state_(STATE_NONE), 134 next_state_(STATE_NONE),
135 io_buf_len_(0), 135 io_buf_len_(0),
136 cleanup_callback_(cleanup_callback), 136 cleanup_callback_(cleanup_callback),
137 io_callback_( 137 io_callback_(
138 base::Bind(&WriteWorker::OnIOComplete, base::Unretained(this))) { 138 base::Bind(&WriteWorker::OnIOComplete, base::Unretained(this))) {
139 } 139 }
140 140
141 DiskBasedCertCache::WriteWorker::~WriteWorker() { 141 DiskBasedCertCache::WriteWorker::~WriteWorker() {
142 if (cert_handle_) 142 if (cert_handle_)
143 X509Certificate::FreeOSCertHandle(cert_handle_); 143 X509Certificate::FreeOSCertHandle(cert_handle_);
144 if (entry_) 144 if (entry_)
145 entry_->Close(); 145 entry_->Close();
146 } 146 }
147 147
148 void DiskBasedCertCache::WriteWorker::Start() { 148 void DiskBasedCertCache::WriteWorker::Start() {
149 DCHECK_EQ(STATE_NONE, state_); 149 DCHECK_EQ(STATE_NONE, next_state_);
150 state_ = STATE_CREATE; 150 next_state_ = STATE_CREATE;
151 int rv = DoLoop(OK); 151 int rv = DoLoop(OK);
152 152
153 if (rv == ERR_IO_PENDING) 153 if (rv == ERR_IO_PENDING)
154 return; 154 return;
155 155
156 Finish(rv); 156 Finish(rv);
157 } 157 }
158 158
159 void DiskBasedCertCache::WriteWorker::AddCallback( 159 void DiskBasedCertCache::WriteWorker::AddCallback(
160 const SetCallback& user_callback) { 160 const SetCallback& user_callback) {
(...skipping 13 matching lines...) Expand all
174 rv = DoLoop(rv); 174 rv = DoLoop(rv);
175 175
176 if (rv == ERR_IO_PENDING) 176 if (rv == ERR_IO_PENDING)
177 return; 177 return;
178 178
179 Finish(rv); 179 Finish(rv);
180 } 180 }
181 181
182 int DiskBasedCertCache::WriteWorker::DoLoop(int rv) { 182 int DiskBasedCertCache::WriteWorker::DoLoop(int rv) {
183 do { 183 do {
184 State next_state = state_; 184 State state = next_state_;
185 state_ = STATE_NONE; 185 next_state_ = STATE_NONE;
186 switch (next_state) { 186 switch (state) {
187 case STATE_CREATE: 187 case STATE_CREATE:
188 rv = DoCreate(); 188 rv = DoCreate();
189 break; 189 break;
190 case STATE_CREATE_COMPLETE: 190 case STATE_CREATE_COMPLETE:
191 rv = DoCreateComplete(rv); 191 rv = DoCreateComplete(rv);
192 break; 192 break;
193 case STATE_OPEN: 193 case STATE_OPEN:
194 rv = DoOpen(); 194 rv = DoOpen();
195 break; 195 break;
196 case STATE_OPEN_COMPLETE: 196 case STATE_OPEN_COMPLETE:
197 rv = DoOpenComplete(rv); 197 rv = DoOpenComplete(rv);
198 break; 198 break;
199 case STATE_WRITE: 199 case STATE_WRITE:
200 rv = DoWrite(); 200 rv = DoWrite();
201 break; 201 break;
202 case STATE_WRITE_COMPLETE: 202 case STATE_WRITE_COMPLETE:
203 rv = DoWriteComplete(rv); 203 rv = DoWriteComplete(rv);
204 break; 204 break;
205 case STATE_NONE: 205 case STATE_NONE:
206 NOTREACHED(); 206 NOTREACHED();
207 break; 207 break;
208 } 208 }
209 } while (rv != ERR_IO_PENDING && state_ != STATE_NONE); 209 } while (rv != ERR_IO_PENDING && next_state_ != STATE_NONE);
210 210
211 return rv; 211 return rv;
212 } 212 }
213 213
214 int DiskBasedCertCache::WriteWorker::DoCreate() { 214 int DiskBasedCertCache::WriteWorker::DoCreate() {
215 state_ = STATE_CREATE_COMPLETE; 215 next_state_ = STATE_CREATE_COMPLETE;
216 216
217 return backend_->CreateEntry(key_, &entry_, io_callback_); 217 return backend_->CreateEntry(key_, &entry_, io_callback_);
218 } 218 }
219 219
220 int DiskBasedCertCache::WriteWorker::DoCreateComplete(int rv) { 220 int DiskBasedCertCache::WriteWorker::DoCreateComplete(int rv) {
221 // An error here usually signifies that the entry already exists. 221 // An error here usually signifies that the entry already exists.
222 // If this occurs, it is necessary to instead open the previously 222 // If this occurs, it is necessary to instead open the previously
223 // existing entry. 223 // existing entry.
224 if (rv < 0) { 224 if (rv < 0) {
225 state_ = STATE_OPEN; 225 next_state_ = STATE_OPEN;
226 return OK; 226 return OK;
227 } 227 }
228 228
229 state_ = STATE_WRITE; 229 next_state_ = STATE_WRITE;
230 return OK; 230 return OK;
231 } 231 }
232 232
233 int DiskBasedCertCache::WriteWorker::DoOpen() { 233 int DiskBasedCertCache::WriteWorker::DoOpen() {
234 state_ = STATE_OPEN_COMPLETE; 234 next_state_ = STATE_OPEN_COMPLETE;
235 return backend_->OpenEntry(key_, &entry_, io_callback_); 235 return backend_->OpenEntry(key_, &entry_, io_callback_);
236 } 236 }
237 237
238 int DiskBasedCertCache::WriteWorker::DoOpenComplete(int rv) { 238 int DiskBasedCertCache::WriteWorker::DoOpenComplete(int rv) {
239 if (rv < 0) 239 if (rv < 0)
240 return rv; 240 return rv;
241 241
242 state_ = STATE_WRITE; 242 next_state_ = STATE_WRITE;
243 return OK; 243 return OK;
244 } 244 }
245 245
246 int DiskBasedCertCache::WriteWorker::DoWrite() { 246 int DiskBasedCertCache::WriteWorker::DoWrite() {
247 std::string write_data; 247 std::string write_data;
248 bool encoded = X509Certificate::GetDEREncoded(cert_handle_, &write_data); 248 bool encoded = X509Certificate::GetDEREncoded(cert_handle_, &write_data);
249 249
250 if (!encoded) 250 if (!encoded)
251 return ERR_FAILED; 251 return ERR_FAILED;
252 252
253 buffer_ = new IOBuffer(write_data.size()); 253 buffer_ = new IOBuffer(write_data.size());
254 io_buf_len_ = write_data.size(); 254 io_buf_len_ = write_data.size();
255 memcpy(buffer_->data(), write_data.data(), io_buf_len_); 255 memcpy(buffer_->data(), write_data.data(), io_buf_len_);
256 256
257 state_ = STATE_WRITE_COMPLETE; 257 next_state_ = STATE_WRITE_COMPLETE;
258 258
259 return entry_->WriteData(0 /* index */, 259 return entry_->WriteData(0 /* index */,
260 0 /* offset */, 260 0 /* offset */,
261 buffer_, 261 buffer_,
262 write_data.size(), 262 write_data.size(),
263 io_callback_, 263 io_callback_,
264 true /* truncate */); 264 true /* truncate */);
265 } 265 }
266 266
267 int DiskBasedCertCache::WriteWorker::DoWriteComplete(int rv) { 267 int DiskBasedCertCache::WriteWorker::DoWriteComplete(int rv) {
(...skipping 16 matching lines...) Expand all
284 key = key_; 284 key = key_;
285 285
286 for (std::vector<SetCallback>::const_iterator it = user_callbacks_.begin(); 286 for (std::vector<SetCallback>::const_iterator it = user_callbacks_.begin();
287 it != user_callbacks_.end(); 287 it != user_callbacks_.end();
288 ++it) { 288 ++it) {
289 it->Run(key); 289 it->Run(key);
290 } 290 }
291 user_callbacks_.clear(); 291 user_callbacks_.clear();
292 } 292 }
293 293
294 // ReadWorkers represent pending Get jobs in the DiskBasedCertCache. Each 294 // ReadWorkers represent pending GetCertificate jobs in the DiskBasedCertCache.
295 // certificate requested to be retrieved from the cache is assigned a ReadWorker 295 // Each certificate requested to be retrieved from the cache is assigned a
296 // on a one-to-one basis. The same |key| should not have multiple ReadWorkers 296 // ReadWorker. The same |key| should not have multiple ReadWorkers at the
297 // at the same time; instead, call AddCallback to add a user_callback_ to 297 // same time; instead, call AddCallback to add a user callback to the
298 // the the existing ReadWorker. 298 // existing ReadWorker.
299 class DiskBasedCertCache::ReadWorker { 299 class DiskBasedCertCache::ReadWorker {
300 public: 300 public:
301 // |backend| is the backend to read |certificate| from, using 301 // |backend| is the backend to read |certificate| from, using
302 // |key| as the key for the disk_cache::Entry. 302 // |key| as the key for the disk_cache::Entry.
303 // |cleanup_callback| is called to clean up this ReadWorker, 303 // |cleanup_callback| is called to clean up this ReadWorker,
304 // regardless of success or failure. 304 // regardless of success or failure.
305 ReadWorker(disk_cache::Backend* backend, 305 ReadWorker(disk_cache::Backend* backend,
306 const std::string& key, 306 const std::string& key,
307 const GetCallback& cleanup_callback); 307 const GetCallback& cleanup_callback);
308 308
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 // Invokes all of |user_callbacks_| 341 // Invokes all of |user_callbacks_|
342 void RunCallbacks(); 342 void RunCallbacks();
343 343
344 disk_cache::Backend* backend_; 344 disk_cache::Backend* backend_;
345 X509Certificate::OSCertHandle cert_handle_; 345 X509Certificate::OSCertHandle cert_handle_;
346 std::string key_; 346 std::string key_;
347 bool canceled_; 347 bool canceled_;
348 348
349 disk_cache::Entry* entry_; 349 disk_cache::Entry* entry_;
350 350
351 State state_; 351 State next_state_;
352 scoped_refptr<IOBuffer> buffer_; 352 scoped_refptr<IOBuffer> buffer_;
353 int io_buf_len_; 353 int io_buf_len_;
354 354
355 GetCallback cleanup_callback_; 355 GetCallback cleanup_callback_;
356 std::vector<GetCallback> user_callbacks_; 356 std::vector<GetCallback> user_callbacks_;
357 CompletionCallback io_callback_; 357 CompletionCallback io_callback_;
358 }; 358 };
359 359
360 DiskBasedCertCache::ReadWorker::ReadWorker(disk_cache::Backend* backend, 360 DiskBasedCertCache::ReadWorker::ReadWorker(disk_cache::Backend* backend,
361 const std::string& key, 361 const std::string& key,
362 const GetCallback& cleanup_callback) 362 const GetCallback& cleanup_callback)
363 : backend_(backend), 363 : backend_(backend),
364 cert_handle_(NULL), 364 cert_handle_(NULL),
365 key_(key), 365 key_(key),
366 canceled_(false), 366 canceled_(false),
367 entry_(NULL), 367 entry_(NULL),
368 state_(STATE_NONE), 368 next_state_(STATE_NONE),
369 io_buf_len_(0), 369 io_buf_len_(0),
370 cleanup_callback_(cleanup_callback), 370 cleanup_callback_(cleanup_callback),
371 io_callback_( 371 io_callback_(
372 base::Bind(&ReadWorker::OnIOComplete, base::Unretained(this))) { 372 base::Bind(&ReadWorker::OnIOComplete, base::Unretained(this))) {
373 } 373 }
374 374
375 DiskBasedCertCache::ReadWorker::~ReadWorker() { 375 DiskBasedCertCache::ReadWorker::~ReadWorker() {
376 if (entry_) 376 if (entry_)
377 entry_->Close(); 377 entry_->Close();
378 if (cert_handle_) 378 if (cert_handle_)
379 X509Certificate::FreeOSCertHandle(cert_handle_); 379 X509Certificate::FreeOSCertHandle(cert_handle_);
380 } 380 }
381 381
382 void DiskBasedCertCache::ReadWorker::Start() { 382 void DiskBasedCertCache::ReadWorker::Start() {
383 DCHECK_EQ(STATE_NONE, state_); 383 DCHECK_EQ(STATE_NONE, next_state_);
384 state_ = STATE_OPEN; 384 next_state_ = STATE_OPEN;
385 int rv = DoLoop(OK); 385 int rv = DoLoop(OK);
386 386
387 if (rv == ERR_IO_PENDING) 387 if (rv == ERR_IO_PENDING)
388 return; 388 return;
389 389
390 Finish(rv); 390 Finish(rv);
391 } 391 }
392 392
393 void DiskBasedCertCache::ReadWorker::AddCallback( 393 void DiskBasedCertCache::ReadWorker::AddCallback(
394 const GetCallback& user_callback) { 394 const GetCallback& user_callback) {
(...skipping 13 matching lines...) Expand all
408 rv = DoLoop(rv); 408 rv = DoLoop(rv);
409 409
410 if (rv == ERR_IO_PENDING) 410 if (rv == ERR_IO_PENDING)
411 return; 411 return;
412 412
413 Finish(rv); 413 Finish(rv);
414 } 414 }
415 415
416 int DiskBasedCertCache::ReadWorker::DoLoop(int rv) { 416 int DiskBasedCertCache::ReadWorker::DoLoop(int rv) {
417 do { 417 do {
418 State next_state = state_; 418 State state = next_state_;
419 state_ = STATE_NONE; 419 next_state_ = STATE_NONE;
420 switch (next_state) { 420 switch (state) {
421 case STATE_OPEN: 421 case STATE_OPEN:
422 rv = DoOpen(); 422 rv = DoOpen();
423 break; 423 break;
424 case STATE_OPEN_COMPLETE: 424 case STATE_OPEN_COMPLETE:
425 rv = DoOpenComplete(rv); 425 rv = DoOpenComplete(rv);
426 break; 426 break;
427 case STATE_READ: 427 case STATE_READ:
428 rv = DoRead(); 428 rv = DoRead();
429 break; 429 break;
430 case STATE_READ_COMPLETE: 430 case STATE_READ_COMPLETE:
431 rv = DoReadComplete(rv); 431 rv = DoReadComplete(rv);
432 break; 432 break;
433 case STATE_NONE: 433 case STATE_NONE:
434 NOTREACHED(); 434 NOTREACHED();
435 break; 435 break;
436 } 436 }
437 } while (rv != ERR_IO_PENDING && state_ != STATE_NONE); 437 } while (rv != ERR_IO_PENDING && next_state_ != STATE_NONE);
438 438
439 return rv; 439 return rv;
440 } 440 }
441 441
442 int DiskBasedCertCache::ReadWorker::DoOpen() { 442 int DiskBasedCertCache::ReadWorker::DoOpen() {
443 state_ = STATE_OPEN_COMPLETE; 443 next_state_ = STATE_OPEN_COMPLETE;
444 return backend_->OpenEntry(key_, &entry_, io_callback_); 444 return backend_->OpenEntry(key_, &entry_, io_callback_);
445 } 445 }
446 446
447 int DiskBasedCertCache::ReadWorker::DoOpenComplete(int rv) { 447 int DiskBasedCertCache::ReadWorker::DoOpenComplete(int rv) {
448 if (rv < 0) { 448 if (rv < 0) {
449 // Errors other than ERR_CACHE_MISS are not recorded as either a hit 449 RecordCacheResult(DISK_CACHE_ERROR);
wtc 2014/08/01 03:03:55 IMPORTANT: can you explain this change? With this
brandonsalmon 2014/08/01 22:14:29 Yep, that was intentional. When I was originally
450 // or a miss.
451 RecordCacheResult(rv == ERR_CACHE_MISS ? CACHE_MISS : DISK_CACHE_ERROR);
452 return rv; 450 return rv;
453 } 451 }
454 452
455 state_ = STATE_READ; 453 next_state_ = STATE_READ;
456 return OK; 454 return OK;
457 } 455 }
458 456
459 int DiskBasedCertCache::ReadWorker::DoRead() { 457 int DiskBasedCertCache::ReadWorker::DoRead() {
460 state_ = STATE_READ_COMPLETE; 458 next_state_ = STATE_READ_COMPLETE;
461 io_buf_len_ = entry_->GetDataSize(0 /* index */); 459 io_buf_len_ = entry_->GetDataSize(0 /* index */);
462 buffer_ = new IOBuffer(io_buf_len_); 460 buffer_ = new IOBuffer(io_buf_len_);
463 return entry_->ReadData( 461 return entry_->ReadData(
464 0 /* index */, 0 /* offset */, buffer_, io_buf_len_, io_callback_); 462 0 /* index */, 0 /* offset */, buffer_, io_buf_len_, io_callback_);
465 } 463 }
466 464
467 int DiskBasedCertCache::ReadWorker::DoReadComplete(int rv) { 465 int DiskBasedCertCache::ReadWorker::DoReadComplete(int rv) {
468 // The cache should return the entire buffer length. If it does not, 466 // The cache should return the entire buffer length. If it does not,
469 // it is probably indicative of an issue other than corruption. 467 // it is probably indicative of an issue other than corruption.
470 if (rv < io_buf_len_) { 468 if (rv < io_buf_len_) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 ++it) { 516 ++it) {
519 it->second->Cancel(); 517 it->second->Cancel();
520 } 518 }
521 for (ReadWorkerMap::iterator it = read_worker_map_.begin(); 519 for (ReadWorkerMap::iterator it = read_worker_map_.begin();
522 it != read_worker_map_.end(); 520 it != read_worker_map_.end();
523 ++it) { 521 ++it) {
524 it->second->Cancel(); 522 it->second->Cancel();
525 } 523 }
526 } 524 }
527 525
528 void DiskBasedCertCache::Get(const std::string& key, const GetCallback& cb) { 526 void DiskBasedCertCache::GetCertificate(const std::string& key,
527 const GetCallback& cb) {
529 DCHECK(!key.empty()); 528 DCHECK(!key.empty());
530 529
531 // If the handle is already in the MRU cache, just return that (via callback). 530 // If the handle is already in the MRU cache, just return that (via callback).
532 // Note, this will also bring the cert_handle to the front of the recency 531 // Note, this will also bring the cert_handle to the front of the recency
533 // list in the MRU cache. 532 // list in the MRU cache.
534 MRUCertCache::iterator mru_it = mru_cert_cache_.Get(key); 533 MRUCertCache::iterator mru_it = mru_cert_cache_.Get(key);
535 if (mru_it != mru_cert_cache_.end()) { 534 if (mru_it != mru_cert_cache_.end()) {
536 RecordCacheResult(MEMORY_CACHE_HIT); 535 RecordCacheResult(MEMORY_CACHE_HIT);
537 ++mem_cache_hits_; 536 ++mem_cache_hits_;
538 cb.Run(mru_it->second); 537 cb.Run(mru_it->second);
(...skipping 11 matching lines...) Expand all
550 weak_factory_.GetWeakPtr(), 549 weak_factory_.GetWeakPtr(),
551 key)); 550 key));
552 read_worker_map_[key] = worker; 551 read_worker_map_[key] = worker;
553 worker->AddCallback(cb); 552 worker->AddCallback(cb);
554 worker->Start(); 553 worker->Start();
555 } else { 554 } else {
556 it->second->AddCallback(cb); 555 it->second->AddCallback(cb);
557 } 556 }
558 } 557 }
559 558
560 void DiskBasedCertCache::Set(const X509Certificate::OSCertHandle cert_handle, 559 void DiskBasedCertCache::SetCertificate(
561 const SetCallback& cb) { 560 const X509Certificate::OSCertHandle cert_handle,
561 const SetCallback& cb) {
562 DCHECK(!cb.is_null()); 562 DCHECK(!cb.is_null());
563 DCHECK(cert_handle); 563 DCHECK(cert_handle);
564 std::string key = GetCacheKeyForCert(cert_handle); 564 std::string key = GetCacheKeyForCert(cert_handle);
565 565
566 WriteWorkerMap::iterator it = write_worker_map_.find(key); 566 WriteWorkerMap::iterator it = write_worker_map_.find(key);
567 567
568 if (it == write_worker_map_.end()) { 568 if (it == write_worker_map_.end()) {
569 WriteWorker* worker = 569 WriteWorker* worker =
570 new WriteWorker(backend_, 570 new WriteWorker(backend_,
571 key, 571 key,
(...skipping 20 matching lines...) Expand all
592 592
593 void DiskBasedCertCache::FinishedWriteOperation( 593 void DiskBasedCertCache::FinishedWriteOperation(
594 const std::string& key, 594 const std::string& key,
595 X509Certificate::OSCertHandle cert_handle) { 595 X509Certificate::OSCertHandle cert_handle) {
596 write_worker_map_.erase(key); 596 write_worker_map_.erase(key);
597 if (!key.empty()) 597 if (!key.empty())
598 mru_cert_cache_.Put(key, X509Certificate::DupOSCertHandle(cert_handle)); 598 mru_cert_cache_.Put(key, X509Certificate::DupOSCertHandle(cert_handle));
599 } 599 }
600 600
601 } // namespace net 601 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698