| Index: net/socket/ssl_client_socket_nss.cc
|
| diff --git a/net/socket/ssl_client_socket_nss.cc b/net/socket/ssl_client_socket_nss.cc
|
| index 47bd809bf2d8c78bdc5c1a4c88002b666c69e0db..5b0a900b4a440bedcf38d5484bc0ed0083ea466c 100644
|
| --- a/net/socket/ssl_client_socket_nss.cc
|
| +++ b/net/socket/ssl_client_socket_nss.cc
|
| @@ -1093,8 +1093,8 @@ int SSLClientSocketNSS::Core::Connect(const CompletionCallback& callback) {
|
| DCHECK(user_read_callback_.is_null());
|
| DCHECK(user_write_callback_.is_null());
|
| DCHECK(user_connect_callback_.is_null());
|
| - DCHECK(!user_read_buf_);
|
| - DCHECK(!user_write_buf_);
|
| + DCHECK(!user_read_buf_.get());
|
| + DCHECK(!user_write_buf_.get());
|
|
|
| next_handshake_state_ = STATE_HANDSHAKE;
|
| int rv = DoHandshakeLoop(OK);
|
| @@ -1148,7 +1148,7 @@ int SSLClientSocketNSS::Core::Read(IOBuffer* buf, int buf_len,
|
| DCHECK_EQ(STATE_NONE, next_handshake_state_);
|
| DCHECK(user_read_callback_.is_null());
|
| DCHECK(user_connect_callback_.is_null());
|
| - DCHECK(!user_read_buf_);
|
| + DCHECK(!user_read_buf_.get());
|
| DCHECK(nss_bufs_);
|
|
|
| user_read_buf_ = buf;
|
| @@ -1202,7 +1202,7 @@ int SSLClientSocketNSS::Core::Write(IOBuffer* buf, int buf_len,
|
| DCHECK_EQ(STATE_NONE, next_handshake_state_);
|
| DCHECK(user_write_callback_.is_null());
|
| DCHECK(user_connect_callback_.is_null());
|
| - DCHECK(!user_write_buf_);
|
| + DCHECK(!user_write_buf_.get());
|
| DCHECK(nss_bufs_);
|
|
|
| user_write_buf_ = buf;
|
| @@ -1545,9 +1545,9 @@ SECStatus SSLClientSocketNSS::Core::ClientAuthHandler(
|
|
|
| if (core->ssl_config_.send_client_cert) {
|
| // Second pass: a client certificate should have been selected.
|
| - if (core->ssl_config_.client_cert) {
|
| - CERTCertificate* cert = CERT_DupCertificate(
|
| - core->ssl_config_.client_cert->os_cert_handle());
|
| + if (core->ssl_config_.client_cert.get()) {
|
| + CERTCertificate* cert =
|
| + CERT_DupCertificate(core->ssl_config_.client_cert->os_cert_handle());
|
| SECKEYPrivateKey* privkey = PK11_FindKeyByAnyCert(cert, wincx);
|
| if (privkey) {
|
| // TODO(jsorianopastor): We should wait for server certificate
|
| @@ -1957,7 +1957,7 @@ int SSLClientSocketNSS::Core::DoGetDBCertComplete(int result) {
|
|
|
| int SSLClientSocketNSS::Core::DoPayloadRead() {
|
| DCHECK(OnNSSTaskRunner());
|
| - DCHECK(user_read_buf_);
|
| + DCHECK(user_read_buf_.get());
|
| DCHECK_GT(user_read_buf_len_, 0);
|
|
|
| int rv;
|
| @@ -2075,7 +2075,7 @@ int SSLClientSocketNSS::Core::DoPayloadRead() {
|
| int SSLClientSocketNSS::Core::DoPayloadWrite() {
|
| DCHECK(OnNSSTaskRunner());
|
|
|
| - DCHECK(user_write_buf_);
|
| + DCHECK(user_write_buf_.get());
|
|
|
| int old_amount_in_read_buffer = memio_GetReadableBufferSize(nss_bufs_);
|
| int rv = PR_Write(nss_fd_, user_write_buf_->data(), user_write_buf_len_);
|
| @@ -2157,7 +2157,7 @@ int SSLClientSocketNSS::Core::BufferRecv() {
|
| } else {
|
| scoped_refptr<IOBuffer> read_buffer(new IOBuffer(nb));
|
| if (OnNetworkTaskRunner()) {
|
| - rv = DoBufferRecv(read_buffer, nb);
|
| + rv = DoBufferRecv(read_buffer.get(), nb);
|
| } else {
|
| bool posted = network_task_runner_->PostTask(
|
| FROM_HERE,
|
| @@ -2202,7 +2202,7 @@ int SSLClientSocketNSS::Core::BufferSend() {
|
| memcpy(send_buffer->data() + len1, buf2, len2);
|
|
|
| if (OnNetworkTaskRunner()) {
|
| - rv = DoBufferSend(send_buffer, len);
|
| + rv = DoBufferSend(send_buffer.get(), len);
|
| } else {
|
| bool posted = network_task_runner_->PostTask(
|
| FROM_HERE,
|
| @@ -2231,7 +2231,7 @@ void SSLClientSocketNSS::Core::OnRecvComplete(int result) {
|
|
|
| // Network layer received some data, check if client requested to read
|
| // decrypted data.
|
| - if (!user_read_buf_)
|
| + if (!user_read_buf_.get())
|
| return;
|
|
|
| int rv = DoReadLoop(result);
|
| @@ -2253,15 +2253,13 @@ void SSLClientSocketNSS::Core::OnSendComplete(int result) {
|
| int rv_write = ERR_IO_PENDING;
|
| bool network_moved;
|
| do {
|
| - if (user_read_buf_)
|
| + if (user_read_buf_.get())
|
| rv_read = DoPayloadRead();
|
| - if (user_write_buf_)
|
| + if (user_write_buf_.get())
|
| rv_write = DoPayloadWrite();
|
| network_moved = DoTransportIO();
|
| - } while (rv_read == ERR_IO_PENDING &&
|
| - rv_write == ERR_IO_PENDING &&
|
| - (user_read_buf_ || user_write_buf_) &&
|
| - network_moved);
|
| + } while (rv_read == ERR_IO_PENDING && rv_write == ERR_IO_PENDING &&
|
| + (user_read_buf_.get() || user_write_buf_.get()) && network_moved);
|
|
|
| // If the parent SSLClientSocketNSS is deleted during the processing of the
|
| // Read callback and OnNSSTaskRunner() == OnNetworkTaskRunner(), then the Core
|
| @@ -2269,13 +2267,13 @@ void SSLClientSocketNSS::Core::OnSendComplete(int result) {
|
| // an extra reference, then check if the Core was detached before invoking the
|
| // next callback.
|
| scoped_refptr<Core> guard(this);
|
| - if (user_read_buf_ && rv_read != ERR_IO_PENDING)
|
| + if (user_read_buf_.get() && rv_read != ERR_IO_PENDING)
|
| DoReadCallback(rv_read);
|
|
|
| if (OnNetworkTaskRunner() && detached_)
|
| return;
|
|
|
| - if (user_write_buf_ && rv_write != ERR_IO_PENDING)
|
| + if (user_write_buf_.get() && rv_write != ERR_IO_PENDING)
|
| DoWriteCallback(rv_write);
|
| }
|
|
|
| @@ -2442,7 +2440,7 @@ void SSLClientSocketNSS::Core::UpdateServerCert() {
|
| nss_handshake_state_.server_cert_chain.Reset(nss_fd_);
|
| nss_handshake_state_.server_cert = X509Certificate::CreateFromDERCertChain(
|
| nss_handshake_state_.server_cert_chain.AsStringPieceVector());
|
| - if (nss_handshake_state_.server_cert) {
|
| + if (nss_handshake_state_.server_cert.get()) {
|
| // Since this will be called asynchronously on another thread, it needs to
|
| // own a reference to the certificate.
|
| NetLog::ParametersCallback net_log_callback =
|
| @@ -2855,7 +2853,7 @@ bool SSLClientSocketNSS::GetSSLInfo(SSLInfo* ssl_info) {
|
| ssl_info->is_issued_by_known_root =
|
| server_cert_verify_result_.is_issued_by_known_root;
|
| ssl_info->client_cert_sent =
|
| - ssl_config_.send_client_cert && ssl_config_.client_cert;
|
| + ssl_config_.send_client_cert && ssl_config_.client_cert.get();
|
| ssl_info->channel_id_sent = WasChannelIDSent();
|
|
|
| PRUint16 cipher_suite = SSLConnectionStatusToCipherSuite(
|
| @@ -3060,7 +3058,7 @@ bool SSLClientSocketNSS::UsingTCPFastOpen() const {
|
|
|
| int SSLClientSocketNSS::Read(IOBuffer* buf, int buf_len,
|
| const CompletionCallback& callback) {
|
| - DCHECK(core_);
|
| + DCHECK(core_.get());
|
| DCHECK(!callback.is_null());
|
|
|
| EnterFunction(buf_len);
|
| @@ -3072,7 +3070,7 @@ int SSLClientSocketNSS::Read(IOBuffer* buf, int buf_len,
|
|
|
| int SSLClientSocketNSS::Write(IOBuffer* buf, int buf_len,
|
| const CompletionCallback& callback) {
|
| - DCHECK(core_);
|
| + DCHECK(core_.get());
|
| DCHECK(!callback.is_null());
|
|
|
| EnterFunction(buf_len);
|
| @@ -3111,8 +3109,12 @@ int SSLClientSocketNSS::Init() {
|
| }
|
|
|
| void SSLClientSocketNSS::InitCore() {
|
| - core_ = new Core(base::ThreadTaskRunnerHandle::Get(), nss_task_runner_,
|
| - transport_.get(), host_and_port_, ssl_config_, &net_log_,
|
| + core_ = new Core(base::ThreadTaskRunnerHandle::Get(),
|
| + nss_task_runner_.get(),
|
| + transport_.get(),
|
| + host_and_port_,
|
| + ssl_config_,
|
| + &net_log_,
|
| server_bound_cert_service_);
|
| }
|
|
|
| @@ -3395,7 +3397,7 @@ int SSLClientSocketNSS::DoVerifyCert(int result) {
|
|
|
| // We may have failed to create X509Certificate object if we are
|
| // running inside sandbox.
|
| - if (!core_->state().server_cert) {
|
| + if (!core_->state().server_cert.get()) {
|
| server_cert_verify_result_.Reset();
|
| server_cert_verify_result_.cert_status = CERT_STATUS_INVALID;
|
| return ERR_CERT_INVALID;
|
| @@ -3412,8 +3414,11 @@ int SSLClientSocketNSS::DoVerifyCert(int result) {
|
| flags |= CertVerifier::VERIFY_CERT_IO_ENABLED;
|
| verifier_.reset(new SingleRequestCertVerifier(cert_verifier_));
|
| return verifier_->Verify(
|
| - core_->state().server_cert, host_and_port_.host(), flags,
|
| - SSLConfigService::GetCRLSet(), &server_cert_verify_result_,
|
| + core_->state().server_cert.get(),
|
| + host_and_port_.host(),
|
| + flags,
|
| + SSLConfigService::GetCRLSet(),
|
| + &server_cert_verify_result_,
|
| base::Bind(&SSLClientSocketNSS::OnHandshakeIOComplete,
|
| base::Unretained(this)),
|
| net_log_);
|
|
|