summaryrefslogtreecommitdiff
path: root/src/mongo/client
diff options
context:
space:
mode:
authorMisha Tyulenev <misha@mongodb.com>2015-11-19 18:01:08 -0500
committerMisha Tyulenev <misha@mongodb.com>2015-11-19 18:17:02 -0500
commit6ff0dce6e092f618f83d73f5a815c2b0cd766bcb (patch)
treec50685fa4fb75b5e23a270630aa914548e93d982 /src/mongo/client
parent23245d6bb38a2a2fa2a4266a1527c82d8ca3736f (diff)
downloadmongo-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.cpp9
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()) {