| Index: net/socket_stream/socket_stream.cc
|
| diff --git a/net/socket_stream/socket_stream.cc b/net/socket_stream/socket_stream.cc
|
| index ce989828a94515cd307d16945d3fa44605901c41..f656cb8b94ab447a84114c8d2f0fe72b1d70ed19 100644
|
| --- a/net/socket_stream/socket_stream.cc
|
| +++ b/net/socket_stream/socket_stream.cc
|
| @@ -29,6 +29,7 @@
|
| #include "net/http/http_network_session.h"
|
| #include "net/http/http_request_info.h"
|
| #include "net/http/http_response_headers.h"
|
| +#include "net/http/http_stream_factory.h"
|
| #include "net/http/http_transaction_factory.h"
|
| #include "net/http/http_util.h"
|
| #include "net/socket/client_socket_factory.h"
|
| @@ -1040,7 +1041,7 @@ int SocketStream::DoSSLHandleCertError(int result) {
|
| DCHECK_EQ(STATE_NONE, next_state_);
|
| DCHECK(IsCertificateError(result));
|
| result = HandleCertificateError(result);
|
| - if (result == ERR_IO_PENDING)
|
| + if (result == OK || result == ERR_IO_PENDING)
|
| next_state_ = STATE_SSL_HANDLE_CERT_ERROR_COMPLETE;
|
| else
|
| next_state_ = STATE_CLOSE;
|
| @@ -1297,12 +1298,16 @@ void SocketStream::DoRestartWithAuth() {
|
|
|
| int SocketStream::HandleCertificateError(int result) {
|
| DCHECK(IsCertificateError(result));
|
| + SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(socket_.get());
|
| + DCHECK(ssl_socket);
|
| +
|
| + if (HttpStreamFactory::ignore_certificate_errors() &&
|
| + ssl_socket->IgnoreCertError(result, LOAD_IGNORE_ALL_CERT_ERRORS))
|
| + return OK;
|
|
|
| if (!delegate_)
|
| return result;
|
|
|
| - SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(socket_.get());
|
| - DCHECK(ssl_socket);
|
| SSLInfo ssl_info;
|
| ssl_socket->GetSSLInfo(&ssl_info);
|
|
|
|
|