OLD | NEW |
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 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 const std::string& http_response_headers() const { | 276 const std::string& http_response_headers() const { |
277 DCHECK(finished_); | 277 DCHECK(finished_); |
278 return response_headers_->raw_headers(); | 278 return response_headers_->raw_headers(); |
279 } | 279 } |
280 | 280 |
281 const std::string& http_response_data() const { | 281 const std::string& http_response_data() const { |
282 DCHECK(finished_); | 282 DCHECK(finished_); |
283 return data_; | 283 return data_; |
284 } | 284 } |
285 | 285 |
286 virtual void OnReceivedRedirect(URLRequest* request, | 286 void OnReceivedRedirect(URLRequest* request, |
287 const RedirectInfo& redirect_info, | 287 const RedirectInfo& redirect_info, |
288 bool* defer_redirect) override { | 288 bool* defer_redirect) override { |
289 DCHECK_EQ(request_.get(), request); | 289 DCHECK_EQ(request_.get(), request); |
290 DCHECK_EQ(base::MessageLoopForIO::current(), io_loop_); | 290 DCHECK_EQ(base::MessageLoopForIO::current(), io_loop_); |
291 | 291 |
292 if (!redirect_info.new_url.SchemeIs("http")) { | 292 if (!redirect_info.new_url.SchemeIs("http")) { |
293 // Prevent redirects to non-HTTP schemes, including HTTPS. This matches | 293 // Prevent redirects to non-HTTP schemes, including HTTPS. This matches |
294 // the initial check in OCSPServerSession::CreateRequest(). | 294 // the initial check in OCSPServerSession::CreateRequest(). |
295 CancelURLRequest(); | 295 CancelURLRequest(); |
296 } | 296 } |
297 } | 297 } |
298 | 298 |
299 virtual void OnResponseStarted(URLRequest* request) override { | 299 void OnResponseStarted(URLRequest* request) override { |
300 DCHECK_EQ(request_.get(), request); | 300 DCHECK_EQ(request_.get(), request); |
301 DCHECK_EQ(base::MessageLoopForIO::current(), io_loop_); | 301 DCHECK_EQ(base::MessageLoopForIO::current(), io_loop_); |
302 | 302 |
303 int bytes_read = 0; | 303 int bytes_read = 0; |
304 if (request->status().is_success()) { | 304 if (request->status().is_success()) { |
305 response_code_ = request_->GetResponseCode(); | 305 response_code_ = request_->GetResponseCode(); |
306 response_headers_ = request_->response_headers(); | 306 response_headers_ = request_->response_headers(); |
307 response_headers_->GetMimeType(&response_content_type_); | 307 response_headers_->GetMimeType(&response_content_type_); |
308 request_->Read(buffer_.get(), kRecvBufferSize, &bytes_read); | 308 request_->Read(buffer_.get(), kRecvBufferSize, &bytes_read); |
309 } | 309 } |
310 OnReadCompleted(request_.get(), bytes_read); | 310 OnReadCompleted(request_.get(), bytes_read); |
311 } | 311 } |
312 | 312 |
313 virtual void OnReadCompleted(URLRequest* request, | 313 void OnReadCompleted(URLRequest* request, int bytes_read) override { |
314 int bytes_read) override { | |
315 DCHECK_EQ(request_.get(), request); | 314 DCHECK_EQ(request_.get(), request); |
316 DCHECK_EQ(base::MessageLoopForIO::current(), io_loop_); | 315 DCHECK_EQ(base::MessageLoopForIO::current(), io_loop_); |
317 | 316 |
318 do { | 317 do { |
319 if (!request_->status().is_success() || bytes_read <= 0) | 318 if (!request_->status().is_success() || bytes_read <= 0) |
320 break; | 319 break; |
321 data_.append(buffer_->data(), bytes_read); | 320 data_.append(buffer_->data(), bytes_read); |
322 } while (request_->Read(buffer_.get(), kRecvBufferSize, &bytes_read)); | 321 } while (request_->Read(buffer_.get(), kRecvBufferSize, &bytes_read)); |
323 | 322 |
324 if (!request_->status().is_io_pending()) { | 323 if (!request_->status().is_io_pending()) { |
(...skipping 27 matching lines...) Expand all Loading... |
352 io_loop_ = NULL; | 351 io_loop_ = NULL; |
353 } | 352 } |
354 cv_.Signal(); | 353 cv_.Signal(); |
355 Release(); // Balanced with StartURLRequest(). | 354 Release(); // Balanced with StartURLRequest(). |
356 } | 355 } |
357 } | 356 } |
358 | 357 |
359 private: | 358 private: |
360 friend class base::RefCountedThreadSafe<OCSPRequestSession>; | 359 friend class base::RefCountedThreadSafe<OCSPRequestSession>; |
361 | 360 |
362 virtual ~OCSPRequestSession() { | 361 ~OCSPRequestSession() override { |
363 // When this destructor is called, there should be only one thread that has | 362 // When this destructor is called, there should be only one thread that has |
364 // a reference to this object, and so that thread doesn't need to lock | 363 // a reference to this object, and so that thread doesn't need to lock |
365 // |lock_| here. | 364 // |lock_| here. |
366 DCHECK(!request_); | 365 DCHECK(!request_); |
367 DCHECK(!io_loop_); | 366 DCHECK(!io_loop_); |
368 } | 367 } |
369 | 368 |
370 // Must call this method while holding |lock_|. | 369 // Must call this method while holding |lock_|. |
371 void CancelLocked() { | 370 void CancelLocked() { |
372 lock_.AssertAcquired(); | 371 lock_.AssertAcquired(); |
(...skipping 595 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
968 void SetURLRequestContextForNSSHttpIO(URLRequestContext* request_context) { | 967 void SetURLRequestContextForNSSHttpIO(URLRequestContext* request_context) { |
969 pthread_mutex_lock(&g_request_context_lock); | 968 pthread_mutex_lock(&g_request_context_lock); |
970 if (request_context) { | 969 if (request_context) { |
971 DCHECK(!g_request_context); | 970 DCHECK(!g_request_context); |
972 } | 971 } |
973 g_request_context = request_context; | 972 g_request_context = request_context; |
974 pthread_mutex_unlock(&g_request_context_lock); | 973 pthread_mutex_unlock(&g_request_context_lock); |
975 } | 974 } |
976 | 975 |
977 } // namespace net | 976 } // namespace net |
OLD | NEW |