summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mongo/util/net/ssl_manager.cpp24
1 files changed, 8 insertions, 16 deletions
diff --git a/src/mongo/util/net/ssl_manager.cpp b/src/mongo/util/net/ssl_manager.cpp
index cec95e4ee51..7ec08da0725 100644
--- a/src/mongo/util/net/ssl_manager.cpp
+++ b/src/mongo/util/net/ssl_manager.cpp
@@ -866,39 +866,31 @@ namespace mongo {
}
SSLConnection* SSLManager::connect(Socket* socket) {
- SSLConnection* sslConn = new SSLConnection(_clientContext, socket, NULL, 0);
- ScopeGuard sslGuard = MakeGuard(::SSL_free, sslConn->ssl);
- ScopeGuard bioGuard = MakeGuard(::BIO_free, sslConn->networkBIO);
+ std::auto_ptr<SSLConnection> sslConn(new SSLConnection(_clientContext, socket, NULL, 0));
int ret;
do {
ret = ::SSL_connect(sslConn->ssl);
- } while(!_doneWithSSLOp(sslConn, ret));
+ } while(!_doneWithSSLOp(sslConn.get(), ret));
if (ret != 1)
- _handleSSLError(SSL_get_error(sslConn, ret), ret);
+ _handleSSLError(SSL_get_error(sslConn.get(), ret), ret);
- sslGuard.Dismiss();
- bioGuard.Dismiss();
- return sslConn;
+ return sslConn.release();
}
SSLConnection* SSLManager::accept(Socket* socket, const char* initialBytes, int len) {
- SSLConnection* sslConn = new SSLConnection(_serverContext, socket, initialBytes, len);
- ScopeGuard sslGuard = MakeGuard(::SSL_free, sslConn->ssl);
- ScopeGuard bioGuard = MakeGuard(::BIO_free, sslConn->networkBIO);
+ std::auto_ptr<SSLConnection> sslConn(new SSLConnection(_serverContext, socket, initialBytes, len));
int ret;
do {
ret = ::SSL_accept(sslConn->ssl);
- } while(!_doneWithSSLOp(sslConn, ret));
+ } while(!_doneWithSSLOp(sslConn.get(), ret));
if (ret != 1)
- _handleSSLError(SSL_get_error(sslConn, ret), ret);
+ _handleSSLError(SSL_get_error(sslConn.get(), ret), ret);
- sslGuard.Dismiss();
- bioGuard.Dismiss();
- return sslConn;
+ return sslConn.release();
}
// TODO SERVER-11601 Use NFC Unicode canonicalization