diff --git a/ACE/ace/SSL/SSL_Context.cpp b/ACE/ace/SSL/SSL_Context.cpp index 9313dc5717f9b..1614b8ede5966 100644 --- a/ACE/ace/SSL/SSL_Context.cpp +++ b/ACE/ace/SSL/SSL_Context.cpp @@ -261,6 +261,7 @@ ACE_SSL_Context::set_mode (int mode) SSL_METHOD *method = 0; #endif + /* these openssl macros negotiate highest available SSL/TLS version */ switch (mode) { case ACE_SSL_Context::SSLv23_client: diff --git a/ACE/ace/SSL/SSL_Context.h b/ACE/ace/SSL/SSL_Context.h index 91903f788c30c..06c176fa17ae7 100644 --- a/ACE/ace/SSL/SSL_Context.h +++ b/ACE/ace/SSL/SSL_Context.h @@ -104,6 +104,7 @@ class ACE_SSL_Export ACE_SSL_Context enum { INVALID_METHOD = -1, + /* these negotiate highest available SSL/TLS version */ SSLv23_client, SSLv23_server, SSLv23 diff --git a/ACE/ace/SSL/SSL_SOCK_Stream.cpp b/ACE/ace/SSL/SSL_SOCK_Stream.cpp index 7216dce868571..aa18067f5945e 100644 --- a/ACE/ace/SSL/SSL_SOCK_Stream.cpp +++ b/ACE/ace/SSL/SSL_SOCK_Stream.cpp @@ -158,8 +158,7 @@ ACE_SSL_SOCK_Stream::recvv (iovec *io_vec, ACE_NEW_RETURN (io_vec->iov_base, char[inlen], -1); - io_vec->iov_len = this->recv (io_vec->iov_base, - inlen); + io_vec->iov_len = static_cast (this->recv (io_vec->iov_base, inlen)); return io_vec->iov_len; } else diff --git a/ACE/ace/SSL/SSL_SOCK_Stream.inl b/ACE/ace/SSL/SSL_SOCK_Stream.inl index f0773ba336f45..619fce516869e 100644 --- a/ACE/ace/SSL/SSL_SOCK_Stream.inl +++ b/ACE/ace/SSL/SSL_SOCK_Stream.inl @@ -320,13 +320,11 @@ ACE_SSL_SOCK_Stream::close () switch (::SSL_get_error (this->ssl_, status)) { case SSL_ERROR_NONE: - case SSL_ERROR_SYSCALL: // Ignore this error condition. - // Reset the SSL object to allow another connection to be made // using this ACE_SSL_SOCK_Stream instance. This prevents the // previous SSL session state from being associated with the new // SSL session/connection. - (void) ::SSL_clear (this->ssl_); + ::SSL_clear (this->ssl_); this->set_handle (ACE_INVALID_HANDLE); return this->stream_.close (); @@ -335,13 +333,15 @@ ACE_SSL_SOCK_Stream::close () errno = EWOULDBLOCK; break; + case SSL_ERROR_SSL: + case SSL_ERROR_SYSCALL: default: ACE_SSL_Context::report_error (); + this->set_handle (ACE_INVALID_HANDLE); ACE_Errno_Guard error (errno); // Save/restore errno - (void) this->stream_.close (); - - return -1; + this->stream_.close (); + break; } return -1;