diff options
author | Misha Tyulenev <misha@mongodb.com> | 2015-11-19 18:01:08 -0500 |
---|---|---|
committer | Misha Tyulenev <misha@mongodb.com> | 2015-11-19 18:17:02 -0500 |
commit | 6ff0dce6e092f618f83d73f5a815c2b0cd766bcb (patch) | |
tree | c50685fa4fb75b5e23a270630aa914548e93d982 /src/mongo/rpc | |
parent | 23245d6bb38a2a2fa2a4266a1527c82d8ca3736f (diff) | |
download | mongo-6ff0dce6e092f618f83d73f5a815c2b0cd766bcb.tar.gz |
SERVER-20651 do not allow mongos connect to mongod if mongod does not support COMMAND protocol
Diffstat (limited to 'src/mongo/rpc')
-rw-r--r-- | src/mongo/rpc/protocol.cpp | 13 | ||||
-rw-r--r-- | src/mongo/rpc/protocol.h | 5 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/mongo/rpc/protocol.cpp b/src/mongo/rpc/protocol.cpp index 5bff4b05e4f..3c3cafb6479 100644 --- a/src/mongo/rpc/protocol.cpp +++ b/src/mongo/rpc/protocol.cpp @@ -151,5 +151,18 @@ bool supportsWireVersionForOpCommandInMongod(int minWireVersion, int maxWireVers (maxWireVersion >= WireVersion::FIND_COMMAND); } +ProtocolSet computeProtocolSet(int minWireVersion, int maxWireVersion) { + ProtocolSet result = supports::kNone; + if (minWireVersion <= maxWireVersion) { + if (maxWireVersion >= WireVersion::FIND_COMMAND) { + result |= supports::kOpCommandOnly; + } + if (minWireVersion <= WireVersion::RELEASE_2_4_AND_BEFORE) { + result |= supports::kOpQueryOnly; + } + } + return result; +} + } // namespace rpc } // namespace mongo diff --git a/src/mongo/rpc/protocol.h b/src/mongo/rpc/protocol.h index 4efb5e0b833..643351106e0 100644 --- a/src/mongo/rpc/protocol.h +++ b/src/mongo/rpc/protocol.h @@ -106,5 +106,10 @@ StatusWith<ProtocolSet> parseProtocolSetFromIsMasterReply(const BSONObj& isMaste */ bool supportsWireVersionForOpCommandInMongod(int minWireVersion, int maxWireVersion); +/** + * Computes supported protocols from wire versions. + */ +ProtocolSet computeProtocolSet(int minWireVersion, int maxWireVersion); + } // namespace rpc } // namespace mongo |