Index: net/socket/ssl_client_socket_win.h |
=================================================================== |
--- net/socket/ssl_client_socket_win.h (revision 28437) |
+++ net/socket/ssl_client_socket_win.h (working copy) |
@@ -53,9 +53,14 @@ |
virtual bool SetSendBufferSize(int32 size); |
private: |
- void DoCallback(int result); |
- void OnIOComplete(int result); |
+ bool completed_handshake() const { |
+ return next_state_ == STATE_COMPLETED_HANDSHAKE; |
+ } |
+ void OnHandshakeIOComplete(int result); |
+ void OnReadComplete(int result); |
+ void OnWriteComplete(int result); |
+ |
int DoLoop(int last_io_result); |
int DoHandshakeRead(); |
int DoHandshakeReadComplete(int result); |
@@ -63,32 +68,46 @@ |
int DoHandshakeWriteComplete(int result); |
int DoVerifyCert(); |
int DoVerifyCertComplete(int result); |
+ |
int DoPayloadRead(); |
int DoPayloadReadComplete(int result); |
+ int DoPayloadDecrypt(); |
int DoPayloadEncrypt(); |
int DoPayloadWrite(); |
int DoPayloadWriteComplete(int result); |
+ int DoCompletedRenegotiation(int result); |
int DidCallInitializeSecurityContext(); |
int DidCompleteHandshake(); |
- void DidCompleteRenegotiation(int result); |
+ void DidCompleteRenegotiation(); |
void LogConnectionTypeMetrics() const; |
- void SetNextStateForRead(); |
void FreeSendBuffer(); |
- CompletionCallbackImpl<SSLClientSocketWin> io_callback_; |
+ // Internal callbacks as async operations complete. |
+ CompletionCallbackImpl<SSLClientSocketWin> handshake_io_callback_; |
+ CompletionCallbackImpl<SSLClientSocketWin> read_callback_; |
+ CompletionCallbackImpl<SSLClientSocketWin> write_callback_; |
+ |
scoped_ptr<ClientSocket> transport_; |
std::string hostname_; |
SSLConfig ssl_config_; |
- CompletionCallback* user_callback_; |
+ // User function to callback when the Connect() completes. |
+ CompletionCallback* user_connect_callback_; |
- // Used by both Read and Write functions. |
- scoped_refptr<IOBuffer> user_buf_; |
- int user_buf_len_; |
+ // User function to callback when a Read() completes. |
+ CompletionCallback* user_read_callback_; |
+ scoped_refptr<IOBuffer> user_read_buf_; |
+ int user_read_buf_len_; |
+ // User function to callback when a Write() completes. |
+ CompletionCallback* user_write_callback_; |
+ scoped_refptr<IOBuffer> user_write_buf_; |
+ int user_write_buf_len_; |
+ |
// Used to Read and Write using transport_. |
- scoped_refptr<IOBuffer> transport_buf_; |
+ scoped_refptr<IOBuffer> transport_read_buf_; |
+ scoped_refptr<IOBuffer> transport_write_buf_; |
enum State { |
STATE_NONE, |
@@ -98,11 +117,11 @@ |
STATE_HANDSHAKE_WRITE_COMPLETE, |
STATE_VERIFY_CERT, |
STATE_VERIFY_CERT_COMPLETE, |
- STATE_PAYLOAD_ENCRYPT, |
- STATE_PAYLOAD_WRITE, |
- STATE_PAYLOAD_WRITE_COMPLETE, |
- STATE_PAYLOAD_READ, |
- STATE_PAYLOAD_READ_COMPLETE, |
+ STATE_COMPLETED_RENEGOTIATION, |
+ STATE_COMPLETED_HANDSHAKE |
+ // After the handshake, the socket remains |
+ // in the STATE_COMPLETED_HANDSHAKE state, |
+ // unless a renegotiate handshake occurs. |
}; |
State next_state_; |
@@ -154,6 +173,9 @@ |
// Renegotiation is in progress. |
bool renegotiating_; |
+ |
+ // True when the decrypter needs more data in order to decrypt. |
+ bool need_more_data_; |
}; |
} // namespace net |