diff options
author | Jason Carey <jcarey@argv.me> | 2017-07-25 19:10:48 -0400 |
---|---|---|
committer | Jason Carey <jcarey@argv.me> | 2017-08-01 17:57:19 -0400 |
commit | 009fdc7dfcc0197632cef5e3fdc250fdba68f7a5 (patch) | |
tree | c8b1ebb23f9e67a10feb79b14130bf71e7c940c0 /src/mongo/client/dbclient.cpp | |
parent | ad30a49a33b8773cbc07388bb257d605cbd6aa12 (diff) | |
download | mongo-009fdc7dfcc0197632cef5e3fdc250fdba68f7a5.tar.gz |
SERVER-30080 LogicalSessions in the shell
Basic logical session implementation for the shell
Diffstat (limited to 'src/mongo/client/dbclient.cpp')
-rw-r--r-- | src/mongo/client/dbclient.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/mongo/client/dbclient.cpp b/src/mongo/client/dbclient.cpp index 6e95116c13e..74d26aac7d5 100644 --- a/src/mongo/client/dbclient.cpp +++ b/src/mongo/client/dbclient.cpp @@ -38,6 +38,7 @@ #include "mongo/base/status.h" #include "mongo/base/status_with.h" +#include "mongo/bson/util/bson_extract.h" #include "mongo/bson/util/builder.h" #include "mongo/client/authenticate.h" #include "mongo/client/constants.h" @@ -774,6 +775,19 @@ Status DBClientConnection::connect(const HostAndPort& serverAddress, StringData return swProtocolSet.getStatus(); } + { + std::string msgField; + auto msgFieldExtractStatus = bsonExtractStringField(swIsMasterReply.data, "msg", &msgField); + + if (msgFieldExtractStatus == ErrorCodes::NoSuchKey) { + _isMongos = false; + } else if (!msgFieldExtractStatus.isOK()) { + return msgFieldExtractStatus; + } else { + _isMongos = (msgField == "isdbgrid"); + } + } + auto validateStatus = rpc::validateWireVersion(WireSpec::instance().outgoing, swProtocolSet.getValue().version); if (!validateStatus.isOK()) { |