summaryrefslogtreecommitdiff
path: root/src/mongo/rpc
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2018-06-22 15:21:18 -0400
committerKaloian Manassiev <kaloian.manassiev@mongodb.com>2018-06-27 15:19:13 -0400
commit60559a00b81293184922b3418a8e56610edf8dd9 (patch)
tree4d74eaf849b70303f26aeb5ee91742e45a1a39b4 /src/mongo/rpc
parente7a75ec01e4e3683cc6b83e3bbc0f4c4b05168dc (diff)
downloadmongo-60559a00b81293184922b3418a8e56610edf8dd9.tar.gz
SERVER-32198 Add support for an optional `vWanted` to StaleConfigInfo
Diffstat (limited to 'src/mongo/rpc')
-rw-r--r--src/mongo/rpc/legacy_reply.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/mongo/rpc/legacy_reply.cpp b/src/mongo/rpc/legacy_reply.cpp
index 20ddf0ba377..d21b880e60c 100644
--- a/src/mongo/rpc/legacy_reply.cpp
+++ b/src/mongo/rpc/legacy_reply.cpp
@@ -79,12 +79,22 @@ LegacyReply::LegacyReply(const Message* message) {
_commandReply.shareOwnershipWith(message->sharedBuffer());
if (_commandReply.firstElementFieldName() == "$err"_sd) {
- // Upconvert legacy errors.
+ // Upconvert legacy errors
+ auto codeElement = _commandReply["code"];
+ int code = codeElement.numberInt();
+ if (!code) {
+ code = ErrorCodes::UnknownError;
+ }
+
+ auto errmsg = _commandReply.firstElement().String();
+ Status status(ErrorCodes::Error(code), errmsg, _commandReply);
+
BSONObjBuilder bob;
- bob.appendAs(_commandReply.firstElement(), "errmsg");
bob.append("ok", 0.0);
- if (auto code = _commandReply["code"]) {
- bob.append(code);
+ bob.append("code", status.code());
+ bob.append("errmsg", status.reason());
+ if (auto extraInfo = status.extraInfo()) {
+ extraInfo->serialize(&bob);
}
_commandReply = bob.obj();
}