diff options
-rw-r--r-- | src/mongo/util/net/ssl_manager.cpp | 24 |
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 |