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

Side by Side Diff: net/ocsp/nss_ocsp.cc

Issue 11347039: Ensure that OCSPIOLoop is associated with right thread if restarted. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Response to review Created 8 years, 1 month 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
« no previous file with comments | « net/ocsp/nss_ocsp.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/ocsp/nss_ocsp.h" 5 #include "net/ocsp/nss_ocsp.h"
6 6
7 #include <certt.h> 7 #include <certt.h>
8 #include <certdb.h> 8 #include <certdb.h>
9 #include <ocsp.h> 9 #include <ocsp.h>
10 #include <nspr.h> 10 #include <nspr.h>
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 71
72 // Called from worker thread. 72 // Called from worker thread.
73 void PostTaskToIOLoop(const tracked_objects::Location& from_here, 73 void PostTaskToIOLoop(const tracked_objects::Location& from_here,
74 const base::Closure& task); 74 const base::Closure& task);
75 75
76 void EnsureIOLoop(); 76 void EnsureIOLoop();
77 77
78 void AddRequest(OCSPRequestSession* request); 78 void AddRequest(OCSPRequestSession* request);
79 void RemoveRequest(OCSPRequestSession* request); 79 void RemoveRequest(OCSPRequestSession* request);
80 80
81 // Clears internal state and calls |StartUsing()|. Should be called only in
82 // the context of testing.
83 void ReuseForTesting() {
84 {
85 base::AutoLock autolock(lock_);
86 DCHECK(MessageLoopForIO::current());
87 thread_checker_.DetachFromThread();
88 thread_checker_.CalledOnValidThread();
Nico 2013/11/05 03:01:30 As is, this is a no-op. You probably meant to DCHE
blundell 2013/11/05 16:01:33 This call is not a no-op: it associates |thread_ch
Nico 2013/11/05 16:29:54 Aha! This seems to be only place in the codebase w
89 shutdown_ = false;
90 used_ = false;
91 }
92 StartUsing();
93 }
94
81 private: 95 private:
82 friend struct base::DefaultLazyInstanceTraits<OCSPIOLoop>; 96 friend struct base::DefaultLazyInstanceTraits<OCSPIOLoop>;
83 97
84 OCSPIOLoop(); 98 OCSPIOLoop();
85 ~OCSPIOLoop(); 99 ~OCSPIOLoop();
86 100
87 void CancelAllRequests(); 101 void CancelAllRequests();
88 102
89 mutable base::Lock lock_; 103 mutable base::Lock lock_;
90 bool shutdown_; // Protected by |lock_|. 104 bool shutdown_; // Protected by |lock_|.
(...skipping 836 matching lines...) Expand 10 before | Expand all | Expand 10 after
927 941
928 void EnsureNSSHttpIOInit() { 942 void EnsureNSSHttpIOInit() {
929 g_ocsp_io_loop.Get().StartUsing(); 943 g_ocsp_io_loop.Get().StartUsing();
930 g_ocsp_nss_initialization.Get(); 944 g_ocsp_nss_initialization.Get();
931 } 945 }
932 946
933 void ShutdownNSSHttpIO() { 947 void ShutdownNSSHttpIO() {
934 g_ocsp_io_loop.Get().Shutdown(); 948 g_ocsp_io_loop.Get().Shutdown();
935 } 949 }
936 950
951 void ResetNSSHttpIOForTesting() {
952 g_ocsp_io_loop.Get().ReuseForTesting();
953 }
954
937 // This function would be called before NSS initialization. 955 // This function would be called before NSS initialization.
938 void SetURLRequestContextForNSSHttpIO(URLRequestContext* request_context) { 956 void SetURLRequestContextForNSSHttpIO(URLRequestContext* request_context) {
939 pthread_mutex_lock(&g_request_context_lock); 957 pthread_mutex_lock(&g_request_context_lock);
940 if (request_context) { 958 if (request_context) {
941 DCHECK(!g_request_context); 959 DCHECK(!g_request_context);
942 } 960 }
943 g_request_context = request_context; 961 g_request_context = request_context;
944 pthread_mutex_unlock(&g_request_context_lock); 962 pthread_mutex_unlock(&g_request_context_lock);
945 } 963 }
946 964
947 } // namespace net 965 } // namespace net
OLDNEW
« no previous file with comments | « net/ocsp/nss_ocsp.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698