Closes #2112 where z_getoperationresult could return stale status.

This commit is contained in:
Simon 2017-02-22 16:14:56 -08:00
parent e96c8725af
commit 2f21206cfc
1 changed files with 5 additions and 5 deletions

View File

@ -3203,17 +3203,17 @@ UniValue z_getoperationstatus_IMPL(const UniValue& params, bool fRemoveFinishedO
// It's possible that the operation was removed from the internal queue and map during this loop
// throw JSONRPCError(RPC_INVALID_PARAMETER, "No operation exists for that id.");
}
UniValue status = operation->getStatus();
UniValue obj = operation->getStatus();
std::string s = obj["status"].get_str();
if (fRemoveFinishedOperations) {
// Caller is only interested in retrieving finished results
if (operation->isSuccess() || operation->isFailed() || operation->isCancelled()) {
ret.push_back(status);
if ("success"==s || "failed"==s || "cancelled"==s) {
ret.push_back(obj);
q->popOperationForId(id);
}
} else {
ret.push_back(status);
ret.push_back(obj);
}
}