summaryrefslogtreecommitdiff
path: root/src/mongo/db/initialize_api_parameters.cpp
diff options
context:
space:
mode:
authorXueruiFa <xuerui.fa@mongodb.com>2021-01-14 17:03:31 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-01-23 18:39:57 +0000
commit5d8bd0b1a0c861f9adb47a94faf635e47a45152a (patch)
tree4f632ef88f356faf9b49bc3c1cc9c03e02369348 /src/mongo/db/initialize_api_parameters.cpp
parent3c929aaf8a7d849b9f19a05252f36f0a999c17d0 (diff)
downloadmongo-5d8bd0b1a0c861f9adb47a94faf635e47a45152a.tar.gz
SERVER-53555: Ensure internal commands are not subject to requireApiVersion check
Diffstat (limited to 'src/mongo/db/initialize_api_parameters.cpp')
-rw-r--r--src/mongo/db/initialize_api_parameters.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/mongo/db/initialize_api_parameters.cpp b/src/mongo/db/initialize_api_parameters.cpp
index d480e3acf2b..bdc05dca77d 100644
--- a/src/mongo/db/initialize_api_parameters.cpp
+++ b/src/mongo/db/initialize_api_parameters.cpp
@@ -35,6 +35,7 @@
#include "mongo/db/commands.h"
#include "mongo/db/operation_context.h"
+#include "mongo/transport/session.h"
#include "mongo/util/assert_util.h"
#include "mongo/util/str.h"
@@ -102,7 +103,11 @@ const APIParametersFromClient initializeAPIParameters(const BSONObj& requestBody
}
void enforceRequireAPIVersion(OperationContext* opCtx, Command* command) {
- if (gRequireApiVersion.load() && !opCtx->getClient()->isInDirectClient() &&
+ auto client = opCtx->getClient();
+ auto isInternalClient =
+ !client->session() || (client->session()->getTags() & transport::Session::kInternalClient);
+
+ if (gRequireApiVersion.load() && !opCtx->getClient()->isInDirectClient() && !isInternalClient &&
command->getName() != "getMore" && !opCtx->isContinuingMultiDocumentTransaction()) {
uassert(
498870,