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/client | |
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/client')
-rw-r--r-- | src/mongo/client/dbclient.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/mongo/client/dbclient.cpp b/src/mongo/client/dbclient.cpp index 66a7abba021..11f650abccb 100644 --- a/src/mongo/client/dbclient.cpp +++ b/src/mongo/client/dbclient.cpp @@ -926,6 +926,15 @@ Status DBClientConnection::connect(const HostAndPort& serverAddress) { _setServerRPCProtocols(swProtocolSet.getValue()); + auto negotiatedProtocol = + rpc::negotiate(getServerRPCProtocols(), + rpc::computeProtocolSet(WireSpec::instance().minWireVersionOutgoing, + WireSpec::instance().maxWireVersionOutgoing)); + + if (!negotiatedProtocol.isOK()) { + return negotiatedProtocol.getStatus(); + } + if (_hook) { auto validationStatus = _hook(swIsMasterReply.getValue()); if (!validationStatus.isOK()) { |