diff --git a/src/ripple/app/misc/impl/Manifest.cpp b/src/ripple/app/misc/impl/Manifest.cpp index f17dbfa92..3214916c9 100644 --- a/src/ripple/app/misc/impl/Manifest.cpp +++ b/src/ripple/app/misc/impl/Manifest.cpp @@ -288,6 +288,19 @@ ManifestCache::applyManifest (Manifest m) bool const revoked = m.revoked(); + if (revoked) + { + /* + A validator master key has been compromised, so its manifests + are now untrustworthy. In order to prevent us from accepting + a forged manifest signed by the compromised master key, store + this manifest, which has the highest possible sequence number + and therefore can't be superseded by a forged one. + */ + if (auto stream = j_.warn()) + logMftAct(stream, "Revoked", m.masterKey, m.sequence); + } + if (iter == map_.end ()) { /* @@ -301,7 +314,8 @@ ManifestCache::applyManifest (Manifest m) if (! revoked) signingToMasterKeys_[m.signingKey] = m.masterKey; - map_.emplace (std::make_pair(m.masterKey, std::move (m))); + auto masterKey = m.masterKey; + map_.emplace(std::move(masterKey), std::move(m)); } else { @@ -321,19 +335,6 @@ ManifestCache::applyManifest (Manifest m) iter->second = std::move (m); } - if (revoked) - { - /* - A validator master key has been compromised, so its manifests - are now untrustworthy. In order to prevent us from accepting - a forged manifest signed by the compromised master key, store - this manifest, which has the highest possible sequence number - and therefore can't be superseded by a forged one. - */ - if (auto stream = j_.warn()) - logMftAct(stream, "Revoked", m.masterKey, m.sequence); - } - return ManifestDisposition::accepted; } diff --git a/src/ripple/rpc/impl/ServerHandlerImp.cpp b/src/ripple/rpc/impl/ServerHandlerImp.cpp index 7f8456360..85827b396 100644 --- a/src/ripple/rpc/impl/ServerHandlerImp.cpp +++ b/src/ripple/rpc/impl/ServerHandlerImp.cpp @@ -779,15 +779,15 @@ ServerHandlerImp::processRequest (Port const& port, result["code"] = result[jss::error_code]; result["message"] = result[jss::error_message]; result.removeMember(jss::error_message); - r[jss::error] = std::move(result); JLOG (m_journal.debug()) << "rpcError: " << result [jss::error] << ": " << result [jss::error_message]; + r[jss::error] = std::move(result); } else { - result[jss::status] = jss::success; - r[jss::result] = std::move(result); + result[jss::status] = jss::success; + r[jss::result] = std::move(result); } } else