OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // TODO(ukai): code is similar with http_network_transaction.cc. We should | 5 // TODO(ukai): code is similar with http_network_transaction.cc. We should |
6 // think about ways to share code, if possible. | 6 // think about ways to share code, if possible. |
7 | 7 |
8 #include "net/socket_stream/socket_stream.h" | 8 #include "net/socket_stream/socket_stream.h" |
9 | 9 |
10 #include <set> | 10 #include <set> |
(...skipping 814 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
825 // if it returns cert verification error. It didn't perform | 825 // if it returns cert verification error. It didn't perform |
826 // SSLHandshake yet. | 826 // SSLHandshake yet. |
827 // So, we should restart establishing connection with the | 827 // So, we should restart establishing connection with the |
828 // certificate in allowed bad certificates in |ssl_config_|. | 828 // certificate in allowed bad certificates in |ssl_config_|. |
829 // See also net/http/http_network_transaction.cc | 829 // See also net/http/http_network_transaction.cc |
830 // HandleCertificateError() and RestartIgnoringLastError(). | 830 // HandleCertificateError() and RestartIgnoringLastError(). |
831 SSLClientSocket* ssl_socket = | 831 SSLClientSocket* ssl_socket = |
832 reinterpret_cast<SSLClientSocket*>(socket_.get()); | 832 reinterpret_cast<SSLClientSocket*>(socket_.get()); |
833 SSLInfo ssl_info; | 833 SSLInfo ssl_info; |
834 ssl_socket->GetSSLInfo(&ssl_info); | 834 ssl_socket->GetSSLInfo(&ssl_info); |
835 SSLConfig::CertAndStatus bad_cert; | |
836 bad_cert.cert = ssl_info.cert; | |
837 bad_cert.cert_status = ssl_info.cert_status; | |
838 if (ssl_config_.IsAllowedBadCert(ssl_info.cert)) { | 835 if (ssl_config_.IsAllowedBadCert(ssl_info.cert)) { |
839 // If we already have the certificate in the set of allowed bad | 836 // If we already have the certificate in the set of allowed bad |
840 // certificates, we did try it and failed again, so we should not | 837 // certificates, we did try it and failed again, so we should not |
841 // retry again: the connection should fail at last. | 838 // retry again: the connection should fail at last. |
842 next_state_ = STATE_CLOSE; | 839 next_state_ = STATE_CLOSE; |
843 return result; | 840 return result; |
844 } | 841 } |
845 // Add the bad certificate to the set of allowed certificates in the | 842 // Add the bad certificate to the set of allowed certificates in the |
846 // SSL info object. | 843 // SSL config object. |
| 844 SSLConfig::CertAndStatus bad_cert; |
| 845 bad_cert.cert = ssl_info.cert; |
| 846 bad_cert.cert_status = ssl_info.cert_status; |
847 ssl_config_.allowed_bad_certs.push_back(bad_cert); | 847 ssl_config_.allowed_bad_certs.push_back(bad_cert); |
848 // Restart connection ignoring the bad certificate. | 848 // Restart connection ignoring the bad certificate. |
849 socket_->Disconnect(); | 849 socket_->Disconnect(); |
850 socket_.reset(); | 850 socket_.reset(); |
851 next_state_ = STATE_TCP_CONNECT; | 851 next_state_ = STATE_TCP_CONNECT; |
852 return OK; | 852 return OK; |
853 } | 853 } |
854 } | 854 } |
855 | 855 |
856 if (result == OK) | 856 if (result == OK) |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1029 | 1029 |
1030 SSLConfigService* SocketStream::ssl_config_service() const { | 1030 SSLConfigService* SocketStream::ssl_config_service() const { |
1031 return context_->ssl_config_service(); | 1031 return context_->ssl_config_service(); |
1032 } | 1032 } |
1033 | 1033 |
1034 ProxyService* SocketStream::proxy_service() const { | 1034 ProxyService* SocketStream::proxy_service() const { |
1035 return context_->proxy_service(); | 1035 return context_->proxy_service(); |
1036 } | 1036 } |
1037 | 1037 |
1038 } // namespace net | 1038 } // namespace net |
OLD | NEW |