From 7d5415e8b0e76912ab39fc7c4842c5c1a035b4a1 Mon Sep 17 00:00:00 2001 From: CJ Cobb <46455409+cjcobb23@users.noreply.github.com> Date: Fri, 17 Jun 2022 17:01:33 -0400 Subject: [PATCH] always append clio warning (#186) * appends a warning stating that this is a clio server to every response --- src/rpc/handlers/ServerInfo.cpp | 3 --- src/webserver/HttpBase.h | 27 +++++++++++---------------- src/webserver/WsBase.h | 27 +++++++++++++-------------- 3 files changed, 24 insertions(+), 33 deletions(-) diff --git a/src/rpc/handlers/ServerInfo.cpp b/src/rpc/handlers/ServerInfo.cpp index df2c9de5d..382447b68 100644 --- a/src/rpc/handlers/ServerInfo.cpp +++ b/src/rpc/handlers/ServerInfo.cpp @@ -88,9 +88,6 @@ doServerInfo(Context const& context) response["etl"] = context.etl->getInfo(); - response["note"] = - "This is a clio server. If you want to talk to rippled, include " - "\"ledger_index\":\"current\" in your request"; return response; } } // namespace RPC diff --git a/src/webserver/HttpBase.h b/src/webserver/HttpBase.h index 0482ea263..c4f4b25d3 100644 --- a/src/webserver/HttpBase.h +++ b/src/webserver/HttpBase.h @@ -402,7 +402,6 @@ handle_request( result = error; - responseStr = boost::json::serialize(response); BOOST_LOG_TRIVIAL(debug) << __func__ << " Encountered error: " << responseStr; } @@ -416,27 +415,23 @@ handle_request( if (!result.contains("error")) result["status"] = "success"; - - responseStr = boost::json::serialize(response); } - auto warningFlag = false; boost::json::array warnings; + warnings.emplace_back( + "This is a clio server. clio only serves validated data. If you " + "want to talk to rippled, include 'ledger_index':'current' in your " + "request"); + auto lastPublishAge = context->etl->lastPublishAgeSeconds(); + if (lastPublishAge >= 60) + warnings.emplace_back("This server may be out of date"); + result["warnings"] = warnings; + responseStr = boost::json::serialize(response); if (!dosGuard.add(ip, responseStr.size())) { warnings.emplace_back("Too many requests"); - warningFlag = true; - } - auto lastPublishAge = context->etl->lastPublishAgeSeconds(); - if (lastPublishAge >= 60) - { - warnings.emplace_back("This server may be out of date"); - warningFlag = true; - } - // reserialize only if a warning was appended. - if (warningFlag) - { - response["warning"] = warnings; + response["warnings"] = warnings; + // reserialize when we need to include this warning responseStr = boost::json::serialize(response); } return send( diff --git a/src/webserver/WsBase.h b/src/webserver/WsBase.h index 2520f9a0b..bd0a0c8a7 100644 --- a/src/webserver/WsBase.h +++ b/src/webserver/WsBase.h @@ -326,25 +326,24 @@ public: return sendError(RPC::Error::rpcINTERNAL); } - std::string responseStr = boost::json::serialize(response); boost::json::array warnings; - auto warningFlag = false; + warnings.emplace_back( + "This is a clio server. clio only serves validated data. If you " + "want to talk to rippled, include 'ledger_index':'current' in your " + "request"); + auto lastPublishAge = etl_->lastPublishAgeSeconds(); + if (lastPublishAge >= 60) + warnings.emplace_back("This server may be out of date"); + + auto& result = response["result"].as_object(); + result["warnings"] = warnings; + std::string responseStr = boost::json::serialize(response); if (!dosGuard_.add(*ip, responseStr.size())) { warnings.emplace_back("Too many requests"); - warningFlag = true; - } - auto lastPublishAge = etl_->lastPublishAgeSeconds(); - if (lastPublishAge >= 60) - { - warnings.emplace_back("This server may be out of date"); - warningFlag = true; - } - // reserialize if a warning was appended - if (warningFlag) - { - response["warning"] = warnings; + response["warnings"] = warnings; + // reserialize if we need to include this warning responseStr = boost::json::serialize(response); } send(std::move(responseStr));