| Index: net/socket/ssl_server_socket_nss.cc
|
| diff --git a/net/socket/ssl_server_socket_nss.cc b/net/socket/ssl_server_socket_nss.cc
|
| index 0785dd7df2ceb5b88d2397d823ef3a113fad2119..5b57492a278f2d19ad31c000f9af9e4878879077 100644
|
| --- a/net/socket/ssl_server_socket_nss.cc
|
| +++ b/net/socket/ssl_server_socket_nss.cc
|
| @@ -58,15 +58,8 @@ SSLServerSocketNSS::SSLServerSocketNSS(
|
| scoped_refptr<X509Certificate> cert,
|
| crypto::RSAPrivateKey* key,
|
| const SSLConfig& ssl_config)
|
| - : ALLOW_THIS_IN_INITIALIZER_LIST(buffer_send_callback_(
|
| - this, &SSLServerSocketNSS::BufferSendComplete)),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(buffer_recv_callback_(
|
| - this, &SSLServerSocketNSS::BufferRecvComplete)),
|
| - transport_send_busy_(false),
|
| + : transport_send_busy_(false),
|
| transport_recv_busy_(false),
|
| - user_handshake_callback_(NULL),
|
| - old_user_read_callback_(NULL),
|
| - user_write_callback_(NULL),
|
| nss_fd_(NULL),
|
| nss_bufs_(NULL),
|
| transport_socket_(transport_socket),
|
| @@ -143,40 +136,14 @@ int SSLServerSocketNSS::ExportKeyingMaterial(const base::StringPiece& label,
|
| return OK;
|
| }
|
|
|
| -int SSLServerSocketNSS::Connect(OldCompletionCallback* callback) {
|
| - NOTIMPLEMENTED();
|
| - return ERR_NOT_IMPLEMENTED;
|
| -}
|
| int SSLServerSocketNSS::Connect(const CompletionCallback& callback) {
|
| NOTIMPLEMENTED();
|
| return ERR_NOT_IMPLEMENTED;
|
| }
|
|
|
| int SSLServerSocketNSS::Read(IOBuffer* buf, int buf_len,
|
| - OldCompletionCallback* callback) {
|
| - DCHECK(!old_user_read_callback_ && user_read_callback_.is_null());
|
| - DCHECK(!user_handshake_callback_);
|
| - DCHECK(!user_read_buf_);
|
| - DCHECK(nss_bufs_);
|
| -
|
| - user_read_buf_ = buf;
|
| - user_read_buf_len_ = buf_len;
|
| -
|
| - DCHECK(completed_handshake_);
|
| -
|
| - int rv = DoReadLoop(OK);
|
| -
|
| - if (rv == ERR_IO_PENDING) {
|
| - old_user_read_callback_ = callback;
|
| - } else {
|
| - user_read_buf_ = NULL;
|
| - user_read_buf_len_ = 0;
|
| - }
|
| - return rv;
|
| -}
|
| -int SSLServerSocketNSS::Read(IOBuffer* buf, int buf_len,
|
| const CompletionCallback& callback) {
|
| - DCHECK(!old_user_read_callback_ && user_read_callback_.is_null());
|
| + DCHECK(user_read_callback_.is_null());
|
| DCHECK(!user_handshake_callback_);
|
| DCHECK(!user_read_buf_);
|
| DCHECK(nss_bufs_);
|
| @@ -198,8 +165,8 @@ int SSLServerSocketNSS::Read(IOBuffer* buf, int buf_len,
|
| }
|
|
|
| int SSLServerSocketNSS::Write(IOBuffer* buf, int buf_len,
|
| - OldCompletionCallback* callback) {
|
| - DCHECK(!user_write_callback_);
|
| + const CompletionCallback& callback) {
|
| + DCHECK(user_write_callback_.is_null());
|
| DCHECK(!user_write_buf_);
|
| DCHECK(nss_bufs_);
|
|
|
| @@ -521,8 +488,10 @@ int SSLServerSocketNSS::BufferSend(void) {
|
| scoped_refptr<IOBuffer> send_buffer(new IOBuffer(len));
|
| memcpy(send_buffer->data(), buf1, len1);
|
| memcpy(send_buffer->data() + len1, buf2, len2);
|
| - rv = transport_socket_->Write(send_buffer, len,
|
| - &buffer_send_callback_);
|
| + rv = transport_socket_->Write(
|
| + send_buffer, len,
|
| + base::Bind(&SSLServerSocketNSS::BufferSendComplete,
|
| + base::Unretained(this)));
|
| if (rv == ERR_IO_PENDING) {
|
| transport_send_busy_ = true;
|
| } else {
|
| @@ -550,7 +519,10 @@ int SSLServerSocketNSS::BufferRecv(void) {
|
| rv = ERR_IO_PENDING;
|
| } else {
|
| recv_buffer_ = new IOBuffer(nb);
|
| - rv = transport_socket_->Read(recv_buffer_, nb, &buffer_recv_callback_);
|
| + rv = transport_socket_->Read(
|
| + recv_buffer_, nb,
|
| + base::Bind(&SSLServerSocketNSS::BufferRecvComplete,
|
| + base::Unretained(this)));
|
| if (rv == ERR_IO_PENDING) {
|
| transport_recv_busy_ = true;
|
| } else {
|
| @@ -739,36 +711,28 @@ void SSLServerSocketNSS::DoHandshakeCallback(int rv) {
|
|
|
| void SSLServerSocketNSS::DoReadCallback(int rv) {
|
| DCHECK(rv != ERR_IO_PENDING);
|
| - DCHECK(old_user_read_callback_ || !user_read_callback_.is_null());
|
| + DCHECK(!user_read_callback_.is_null());
|
|
|
| // Since Run may result in Read being called, clear |user_read_callback_|
|
| // up front.
|
| - if (old_user_read_callback_) {
|
| - OldCompletionCallback* c = old_user_read_callback_;
|
| - old_user_read_callback_ = NULL;
|
| - user_read_buf_ = NULL;
|
| - user_read_buf_len_ = 0;
|
| - c->Run(rv);
|
| - } else {
|
| - CompletionCallback c = user_read_callback_;
|
| - user_read_callback_.Reset();
|
| - user_read_buf_ = NULL;
|
| - user_read_buf_len_ = 0;
|
| - c.Run(rv);
|
| - }
|
| + CompletionCallback c = user_read_callback_;
|
| + user_read_callback_.Reset();
|
| + user_read_buf_ = NULL;
|
| + user_read_buf_len_ = 0;
|
| + c.Run(rv);
|
| }
|
|
|
| void SSLServerSocketNSS::DoWriteCallback(int rv) {
|
| DCHECK(rv != ERR_IO_PENDING);
|
| - DCHECK(user_write_callback_);
|
| + DCHECK(!user_write_callback_.is_null());
|
|
|
| // Since Run may result in Write being called, clear |user_write_callback_|
|
| // up front.
|
| - OldCompletionCallback* c = user_write_callback_;
|
| - user_write_callback_ = NULL;
|
| + CompletionCallback c = user_write_callback_;
|
| + user_write_callback_.Reset();
|
| user_write_buf_ = NULL;
|
| user_write_buf_len_ = 0;
|
| - c->Run(rv);
|
| + c.Run(rv);
|
| }
|
|
|
| // static
|
|
|