summaryrefslogtreecommitdiff
path: root/src/mongo/db/server_options_helpers.cpp
diff options
context:
space:
mode:
authorShaun Verch <shaun.verch@mongodb.com>2014-03-27 17:07:40 -0400
committerShaun Verch <shaun.verch@mongodb.com>2014-03-28 13:46:53 -0400
commit086c91313022d75c4ba6a8ee4655c61c84ed2590 (patch)
tree42e883fafeadcdcacdce933eccd8bf782cad762f /src/mongo/db/server_options_helpers.cpp
parente4c7d8dec2ddd172ad788483846dcf8e670581a5 (diff)
downloadmongo-086c91313022d75c4ba6a8ee4655c61c84ed2590.tar.gz
SERVER-13379 Canonicalize objcheck and noobjcheck as net.wireObjectCheck
Diffstat (limited to 'src/mongo/db/server_options_helpers.cpp')
-rw-r--r--src/mongo/db/server_options_helpers.cpp55
1 files changed, 40 insertions, 15 deletions
diff --git a/src/mongo/db/server_options_helpers.cpp b/src/mongo/db/server_options_helpers.cpp
index feef5f2006f..4d139c248dd 100644
--- a/src/mongo/db/server_options_helpers.cpp
+++ b/src/mongo/db/server_options_helpers.cpp
@@ -260,12 +260,14 @@ namespace {
options->addOptionChaining("objcheck", "objcheck", moe::Switch,
"inspect client data for validity on receipt (DEFAULT)")
.hidden()
- .setSources(moe::SourceAllLegacy);
+ .setSources(moe::SourceAllLegacy)
+ .incompatibleWith("noobjcheck");
options->addOptionChaining("noobjcheck", "noobjcheck", moe::Switch,
"do NOT inspect client data for validity on receipt")
.hidden()
- .setSources(moe::SourceAllLegacy);
+ .setSources(moe::SourceAllLegacy)
+ .incompatibleWith("objcheck");
options->addOptionChaining("net.wireObjectCheck", "", moe::Bool,
"inspect client data for validity on receipt (DEFAULT)")
@@ -380,6 +382,42 @@ namespace {
log() << "options: " << serverGlobalParams.parsedOpts << endl;
}
+ Status validateServerOptions(const moe::Environment& params) {
+ // This function should contain custom validation that cannot be expressed as simple
+ // constraints on the options.
+
+ return Status::OK();
+ }
+
+ Status canonicalizeServerOptions(moe::Environment* params) {
+
+ // "net.wireObjectCheck" comes from the config file, so override it if either "objcheck" or
+ // "noobjcheck" are set, since those come from the command line.
+ if (params->count("objcheck")) {
+ Status ret = params->set("net.wireObjectCheck", moe::Value(true));
+ if (!ret.isOK()) {
+ return ret;
+ }
+ ret = params->remove("objcheck");
+ if (!ret.isOK()) {
+ return ret;
+ }
+ }
+
+ if (params->count("noobjcheck")) {
+ Status ret = params->set("net.wireObjectCheck", moe::Value(false));
+ if (!ret.isOK()) {
+ return ret;
+ }
+ ret = params->remove("noobjcheck");
+ if (!ret.isOK()) {
+ return ret;
+ }
+ }
+
+ return Status::OK();
+ }
+
Status storeServerOptions(const moe::Environment& params,
const std::vector<std::string>& args) {
@@ -514,23 +552,10 @@ namespace {
}
}
- // Check "net.wireObjectCheck" first which comes from the config file so that specifying
- // "objcheck" or "noobjcheck" which come from the command line will override
- // "net.wireObjectCheck"
if (params.count("net.wireObjectCheck")) {
serverGlobalParams.objcheck = params["net.wireObjectCheck"].as<bool>();
}
- if (params.count("objcheck")) {
- serverGlobalParams.objcheck = true;
- }
- if (params.count("noobjcheck")) {
- if (params.count("objcheck")) {
- return Status(ErrorCodes::BadValue, "can't have both --objcheck and --noobjcheck");
- }
- serverGlobalParams.objcheck = false;
- }
-
if (params.count("net.bindIp")) {
// passing in wildcard is the same as default behavior; remove and warn
if (serverGlobalParams.bind_ip == "0.0.0.0") {