Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(979)

Side by Side Diff: net/socket/ssl_server_socket_nss.cc

Issue 11275088: Remove implicit scoped_refptr operator T* Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/socket/ssl_client_socket_unittest.cc ('k') | net/socket/tcp_server_socket_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/socket/ssl_server_socket_nss.h" 5 #include "net/socket/ssl_server_socket_nss.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <winsock2.h> 8 #include <winsock2.h>
9 #endif 9 #endif
10 10
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 194
195 int SSLServerSocketNSS::Connect(const CompletionCallback& callback) { 195 int SSLServerSocketNSS::Connect(const CompletionCallback& callback) {
196 NOTIMPLEMENTED(); 196 NOTIMPLEMENTED();
197 return ERR_NOT_IMPLEMENTED; 197 return ERR_NOT_IMPLEMENTED;
198 } 198 }
199 199
200 int SSLServerSocketNSS::Read(IOBuffer* buf, int buf_len, 200 int SSLServerSocketNSS::Read(IOBuffer* buf, int buf_len,
201 const CompletionCallback& callback) { 201 const CompletionCallback& callback) {
202 DCHECK(user_read_callback_.is_null()); 202 DCHECK(user_read_callback_.is_null());
203 DCHECK(user_handshake_callback_.is_null()); 203 DCHECK(user_handshake_callback_.is_null());
204 DCHECK(!user_read_buf_); 204 DCHECK(!user_read_buf_.get());
205 DCHECK(nss_bufs_); 205 DCHECK(nss_bufs_);
206 DCHECK(!callback.is_null()); 206 DCHECK(!callback.is_null());
207 207
208 user_read_buf_ = buf; 208 user_read_buf_ = buf;
209 user_read_buf_len_ = buf_len; 209 user_read_buf_len_ = buf_len;
210 210
211 DCHECK(completed_handshake_); 211 DCHECK(completed_handshake_);
212 212
213 int rv = DoReadLoop(OK); 213 int rv = DoReadLoop(OK);
214 214
215 if (rv == ERR_IO_PENDING) { 215 if (rv == ERR_IO_PENDING) {
216 user_read_callback_ = callback; 216 user_read_callback_ = callback;
217 } else { 217 } else {
218 user_read_buf_ = NULL; 218 user_read_buf_ = NULL;
219 user_read_buf_len_ = 0; 219 user_read_buf_len_ = 0;
220 } 220 }
221 return rv; 221 return rv;
222 } 222 }
223 223
224 int SSLServerSocketNSS::Write(IOBuffer* buf, int buf_len, 224 int SSLServerSocketNSS::Write(IOBuffer* buf, int buf_len,
225 const CompletionCallback& callback) { 225 const CompletionCallback& callback) {
226 DCHECK(user_write_callback_.is_null()); 226 DCHECK(user_write_callback_.is_null());
227 DCHECK(!user_write_buf_); 227 DCHECK(!user_write_buf_.get());
228 DCHECK(nss_bufs_); 228 DCHECK(nss_bufs_);
229 DCHECK(!callback.is_null()); 229 DCHECK(!callback.is_null());
230 230
231 user_write_buf_ = buf; 231 user_write_buf_ = buf;
232 user_write_buf_len_ = buf_len; 232 user_write_buf_len_ = buf_len;
233 233
234 int rv = DoWriteLoop(OK); 234 int rv = DoWriteLoop(OK);
235 235
236 if (rv == ERR_IO_PENDING) { 236 if (rv == ERR_IO_PENDING) {
237 user_write_callback_ = callback; 237 user_write_callback_ = callback;
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 void SSLServerSocketNSS::OnSendComplete(int result) { 488 void SSLServerSocketNSS::OnSendComplete(int result) {
489 if (next_handshake_state_ == STATE_HANDSHAKE) { 489 if (next_handshake_state_ == STATE_HANDSHAKE) {
490 // In handshake phase. 490 // In handshake phase.
491 OnHandshakeIOComplete(result); 491 OnHandshakeIOComplete(result);
492 return; 492 return;
493 } 493 }
494 494
495 if (!completed_handshake_) 495 if (!completed_handshake_)
496 return; 496 return;
497 497
498 if (user_write_buf_) { 498 if (user_write_buf_.get()) {
499 int rv = DoWriteLoop(result); 499 int rv = DoWriteLoop(result);
500 if (rv != ERR_IO_PENDING) 500 if (rv != ERR_IO_PENDING)
501 DoWriteCallback(rv); 501 DoWriteCallback(rv);
502 } else { 502 } else {
503 // Ensure that any queued ciphertext is flushed. 503 // Ensure that any queued ciphertext is flushed.
504 DoTransportIO(); 504 DoTransportIO();
505 } 505 }
506 } 506 }
507 507
508 void SSLServerSocketNSS::OnRecvComplete(int result) { 508 void SSLServerSocketNSS::OnRecvComplete(int result) {
509 if (next_handshake_state_ == STATE_HANDSHAKE) { 509 if (next_handshake_state_ == STATE_HANDSHAKE) {
510 // In handshake phase. 510 // In handshake phase.
511 OnHandshakeIOComplete(result); 511 OnHandshakeIOComplete(result);
512 return; 512 return;
513 } 513 }
514 514
515 // Network layer received some data, check if client requested to read 515 // Network layer received some data, check if client requested to read
516 // decrypted data. 516 // decrypted data.
517 if (!user_read_buf_ || !completed_handshake_) 517 if (!user_read_buf_.get() || !completed_handshake_)
518 return; 518 return;
519 519
520 int rv = DoReadLoop(result); 520 int rv = DoReadLoop(result);
521 if (rv != ERR_IO_PENDING) 521 if (rv != ERR_IO_PENDING)
522 DoReadCallback(rv); 522 DoReadCallback(rv);
523 } 523 }
524 524
525 void SSLServerSocketNSS::OnHandshakeIOComplete(int result) { 525 void SSLServerSocketNSS::OnHandshakeIOComplete(int result) {
526 int rv = DoHandshakeLoop(result); 526 int rv = DoHandshakeLoop(result);
527 if (rv != ERR_IO_PENDING) { 527 if (rv != ERR_IO_PENDING) {
(...skipping 15 matching lines...) Expand all
543 unsigned int len1, len2; 543 unsigned int len1, len2;
544 memio_GetWriteParams(nss_bufs_, &buf1, &len1, &buf2, &len2); 544 memio_GetWriteParams(nss_bufs_, &buf1, &len1, &buf2, &len2);
545 const unsigned int len = len1 + len2; 545 const unsigned int len = len1 + len2;
546 546
547 int rv = 0; 547 int rv = 0;
548 if (len) { 548 if (len) {
549 scoped_refptr<IOBuffer> send_buffer(new IOBuffer(len)); 549 scoped_refptr<IOBuffer> send_buffer(new IOBuffer(len));
550 memcpy(send_buffer->data(), buf1, len1); 550 memcpy(send_buffer->data(), buf1, len1);
551 memcpy(send_buffer->data() + len1, buf2, len2); 551 memcpy(send_buffer->data() + len1, buf2, len2);
552 rv = transport_socket_->Write( 552 rv = transport_socket_->Write(
553 send_buffer, len, 553 send_buffer.get(), len,
554 base::Bind(&SSLServerSocketNSS::BufferSendComplete, 554 base::Bind(&SSLServerSocketNSS::BufferSendComplete,
555 base::Unretained(this))); 555 base::Unretained(this)));
556 if (rv == ERR_IO_PENDING) { 556 if (rv == ERR_IO_PENDING) {
557 transport_send_busy_ = true; 557 transport_send_busy_ = true;
558 } else { 558 } else {
559 memio_PutWriteResult(nss_bufs_, MapErrorToNSS(rv)); 559 memio_PutWriteResult(nss_bufs_, MapErrorToNSS(rv));
560 } 560 }
561 } 561 }
562 562
563 return rv; 563 return rv;
(...skipping 10 matching lines...) Expand all
574 574
575 char* buf; 575 char* buf;
576 int nb = memio_GetReadParams(nss_bufs_, &buf); 576 int nb = memio_GetReadParams(nss_bufs_, &buf);
577 int rv; 577 int rv;
578 if (!nb) { 578 if (!nb) {
579 // buffer too full to read into, so no I/O possible at moment 579 // buffer too full to read into, so no I/O possible at moment
580 rv = ERR_IO_PENDING; 580 rv = ERR_IO_PENDING;
581 } else { 581 } else {
582 recv_buffer_ = new IOBuffer(nb); 582 recv_buffer_ = new IOBuffer(nb);
583 rv = transport_socket_->Read( 583 rv = transport_socket_->Read(
584 recv_buffer_, nb, 584 recv_buffer_.get(), nb,
585 base::Bind(&SSLServerSocketNSS::BufferRecvComplete, 585 base::Bind(&SSLServerSocketNSS::BufferRecvComplete,
586 base::Unretained(this))); 586 base::Unretained(this)));
587 if (rv == ERR_IO_PENDING) { 587 if (rv == ERR_IO_PENDING) {
588 transport_recv_busy_ = true; 588 transport_recv_busy_ = true;
589 } else { 589 } else {
590 if (rv > 0) 590 if (rv > 0)
591 memcpy(buf, recv_buffer_->data(), rv); 591 memcpy(buf, recv_buffer_->data(), rv);
592 memio_PutReadResult(nss_bufs_, MapErrorToNSS(rv)); 592 memio_PutReadResult(nss_bufs_, MapErrorToNSS(rv));
593 recv_buffer_ = NULL; 593 recv_buffer_ = NULL;
594 } 594 }
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 // initializes the NSS base library. 825 // initializes the NSS base library.
826 EnsureNSSSSLInit(); 826 EnsureNSSSSLInit();
827 if (!NSS_IsInitialized()) 827 if (!NSS_IsInitialized())
828 return ERR_UNEXPECTED; 828 return ERR_UNEXPECTED;
829 829
830 EnableSSLServerSockets(); 830 EnableSSLServerSockets();
831 return OK; 831 return OK;
832 } 832 }
833 833
834 } // namespace net 834 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/ssl_client_socket_unittest.cc ('k') | net/socket/tcp_server_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698