diff options
Diffstat (limited to 'src/mongo/db/auth/sasl_commands.cpp')
-rw-r--r-- | src/mongo/db/auth/sasl_commands.cpp | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/src/mongo/db/auth/sasl_commands.cpp b/src/mongo/db/auth/sasl_commands.cpp index 81d784e64a3..7f4b1010462 100644 --- a/src/mongo/db/auth/sasl_commands.cpp +++ b/src/mongo/db/auth/sasl_commands.cpp @@ -335,26 +335,18 @@ bool runSaslStart(OperationContext* opCtx, } std::string principalName; - try { - auto session = - uassertStatusOK(doSaslStart(opCtx, db, cmdObj, &result, &principalName, speculative)); - const bool isClusterMember = session->getMechanism().isClusterMember(); - if (isClusterMember) { - uassertStatusOK(authCounter.incClusterAuthenticateReceived(mechanismName)); - } - if (session->getMechanism().isSuccess()) { + auto swSession = doSaslStart(opCtx, db, cmdObj, &result, &principalName, speculative); + + if (!swSession.isOK() || swSession.getValue()->getMechanism().isSuccess()) { + audit::logAuthentication( + client, mechanismName, UserName(principalName, db), swSession.getStatus().code()); + uassertStatusOK(swSession.getStatus()); + if (swSession.getValue()->getMechanism().isSuccess()) { uassertStatusOK(authCounter.incAuthenticateSuccessful(mechanismName)); - if (isClusterMember) { - uassertStatusOK(authCounter.incClusterAuthenticateSuccessful(mechanismName)); - } - audit::logAuthentication( - client, mechanismName, UserName(principalName, db), Status::OK().code()); - } else { - AuthenticationSession::swap(client, session); } - } catch (const AssertionException& ex) { - audit::logAuthentication(client, mechanismName, UserName(principalName, db), ex.code()); - throw; + } else { + auto session = std::move(swSession.getValue()); + AuthenticationSession::swap(client, session); } return true; @@ -416,10 +408,6 @@ bool CmdSaslContinue::run(OperationContext* opCtx, if (mechanism.isSuccess()) { uassertStatusOK( authCounter.incAuthenticateSuccessful(mechanism.mechanismName().toString())); - if (mechanism.isClusterMember()) { - uassertStatusOK(authCounter.incClusterAuthenticateSuccessful( - mechanism.mechanismName().toString())); - } } } else { AuthenticationSession::swap(client, sessionGuard); |