diff options
author | Shaun Verch <shaun.verch@mongodb.com> | 2014-03-27 17:07:40 -0400 |
---|---|---|
committer | Shaun Verch <shaun.verch@mongodb.com> | 2014-03-28 13:46:53 -0400 |
commit | 086c91313022d75c4ba6a8ee4655c61c84ed2590 (patch) | |
tree | 42e883fafeadcdcacdce933eccd8bf782cad762f /src/mongo/db/server_options_helpers.cpp | |
parent | e4c7d8dec2ddd172ad788483846dcf8e670581a5 (diff) | |
download | mongo-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.cpp | 55 |
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") { |