Chromium Code Reviews| 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/test/embedded_test_server/embedded_test_server.h" | 5 #include "net/test/embedded_test_server/embedded_test_server.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 285 std::vector<std::string> headers; | 285 std::vector<std::string> headers; |
| 286 headers.push_back("PRIVATE KEY"); | 286 headers.push_back("PRIVATE KEY"); |
| 287 PEMTokenizer pem_tokenizer(key_string, headers); | 287 PEMTokenizer pem_tokenizer(key_string, headers); |
| 288 pem_tokenizer.GetNext(); | 288 pem_tokenizer.GetNext(); |
| 289 std::vector<uint8_t> key_vector; | 289 std::vector<uint8_t> key_vector; |
| 290 key_vector.assign(pem_tokenizer.data().begin(), pem_tokenizer.data().end()); | 290 key_vector.assign(pem_tokenizer.data().begin(), pem_tokenizer.data().end()); |
| 291 | 291 |
| 292 scoped_ptr<crypto::RSAPrivateKey> server_key( | 292 scoped_ptr<crypto::RSAPrivateKey> server_key( |
| 293 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(key_vector)); | 293 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(key_vector)); |
| 294 | 294 |
| 295 return CreateSSLServerSocket(std::move(connection), GetCertificate().get(), | 295 scoped_ptr<SSLServerSocketContext> context = CreateSSLServerSocketContext( |
| 296 *server_key, ssl_config_); | 296 GetCertificate().get(), *server_key, ssl_config_); |
| 297 | |
| 298 return context->CreateSSLServerSocket(std::move(connection)); | |
|
davidben
2016/01/22 23:57:48
The socket should not outlive the context, nor sho
ryanchung
2016/01/29 23:28:16
I moved the context creation to InitializeAndListe
| |
| 297 } | 299 } |
| 298 | 300 |
| 299 void EmbeddedTestServer::DoAcceptLoop() { | 301 void EmbeddedTestServer::DoAcceptLoop() { |
| 300 int rv = OK; | 302 int rv = OK; |
| 301 while (rv == OK) { | 303 while (rv == OK) { |
| 302 rv = listen_socket_->Accept( | 304 rv = listen_socket_->Accept( |
| 303 &accepted_socket_, base::Bind(&EmbeddedTestServer::OnAcceptCompleted, | 305 &accepted_socket_, base::Bind(&EmbeddedTestServer::OnAcceptCompleted, |
| 304 base::Unretained(this))); | 306 base::Unretained(this))); |
| 305 if (rv == ERR_IO_PENDING) | 307 if (rv == ERR_IO_PENDING) |
| 306 return; | 308 return; |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 422 run_loop.QuitClosure())) { | 424 run_loop.QuitClosure())) { |
| 423 return false; | 425 return false; |
| 424 } | 426 } |
| 425 run_loop.Run(); | 427 run_loop.Run(); |
| 426 | 428 |
| 427 return true; | 429 return true; |
| 428 } | 430 } |
| 429 | 431 |
| 430 } // namespace test_server | 432 } // namespace test_server |
| 431 } // namespace net | 433 } // namespace net |
| OLD | NEW |