From 20e616f86444d00712ac7eb840666e2b0378af4a Mon Sep 17 00:00:00 2001 From: stickies-v Date: Thu, 18 Apr 2024 14:05:12 +0100 Subject: [PATCH] move-only: move warnings from common to node Since rpc/util.cpp is in common, also move GetNodeWarnings() to node::GetWarningsForRPC() --- src/Makefile.am | 4 ++-- src/index/base.cpp | 1 - src/node/abort.cpp | 2 +- src/node/interfaces.cpp | 2 +- src/node/kernel_notifications.cpp | 4 ++-- src/node/timeoffsets.cpp | 6 +++--- src/{ => node}/warnings.cpp | 19 ++++++++++++++++++- src/{ => node}/warnings.h | 15 ++++++++++++--- src/rpc/blockchain.cpp | 3 ++- src/rpc/mining.cpp | 3 ++- src/rpc/net.cpp | 3 ++- src/rpc/util.cpp | 19 ++----------------- src/rpc/util.h | 2 -- src/validation.cpp | 6 +++--- 14 files changed, 50 insertions(+), 39 deletions(-) rename src/{ => node}/warnings.cpp (80%) rename src/{ => node}/warnings.h (61%) diff --git a/src/Makefile.am b/src/Makefile.am index 2562c4cc65..77e0c3a6da 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -239,6 +239,7 @@ BITCOIN_CORE_H = \ node/types.h \ node/utxo_snapshot.h \ node/validation_cache_args.h \ + node/warnings.h \ noui.h \ outputtype.h \ policy/v3_policy.h \ @@ -367,7 +368,6 @@ BITCOIN_CORE_H = \ wallet/wallettool.h \ wallet/walletutil.h \ walletinitinterface.h \ - warnings.h \ zmq/zmqabstractnotifier.h \ zmq/zmqnotificationinterface.h \ zmq/zmqpublishnotifier.h \ @@ -444,6 +444,7 @@ libbitcoin_node_a_SOURCES = \ node/txreconciliation.cpp \ node/utxo_snapshot.cpp \ node/validation_cache_args.cpp \ + node/warnings.cpp \ noui.cpp \ policy/v3_policy.cpp \ policy/fees.cpp \ @@ -721,7 +722,6 @@ libbitcoin_common_a_SOURCES = \ script/sign.cpp \ script/signingprovider.cpp \ script/solver.cpp \ - warnings.cpp \ $(BITCOIN_CORE_H) # diff --git a/src/index/base.cpp b/src/index/base.cpp index e66c89f9e4..c222fd22fc 100644 --- a/src/index/base.cpp +++ b/src/index/base.cpp @@ -17,7 +17,6 @@ #include #include #include // For g_chainman -#include #include #include diff --git a/src/node/abort.cpp b/src/node/abort.cpp index b727608384..6f836824b2 100644 --- a/src/node/abort.cpp +++ b/src/node/abort.cpp @@ -6,9 +6,9 @@ #include #include +#include #include #include -#include #include #include diff --git a/src/node/interfaces.cpp b/src/node/interfaces.cpp index 19f4aaf9c4..88af9dadbc 100644 --- a/src/node/interfaces.cpp +++ b/src/node/interfaces.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -53,7 +54,6 @@ #include #include #include -#include #include // IWYU pragma: keep diff --git a/src/node/kernel_notifications.cpp b/src/node/kernel_notifications.cpp index 1f07014ee2..1900ac3117 100644 --- a/src/node/kernel_notifications.cpp +++ b/src/node/kernel_notifications.cpp @@ -13,12 +13,12 @@ #include #include #include +#include #include #include #include #include #include -#include #include #include @@ -49,7 +49,7 @@ static void AlertNotify(const std::string& strMessage) static void DoWarning(const bilingual_str& warning) { static bool fWarned = false; - SetMiscWarning(warning); + node::SetMiscWarning(warning); if (!fWarned) { AlertNotify(warning.original); fWarned = true; diff --git a/src/node/timeoffsets.cpp b/src/node/timeoffsets.cpp index 62f527be8a..17ee44a92c 100644 --- a/src/node/timeoffsets.cpp +++ b/src/node/timeoffsets.cpp @@ -5,11 +5,11 @@ #include #include #include +#include #include #include #include #include -#include #include #include @@ -49,7 +49,7 @@ bool TimeOffsets::WarnIfOutOfSync() const // when median == std::numeric_limits::min(), calling std::chrono::abs is UB auto median{std::max(Median(), std::chrono::seconds(std::numeric_limits::min() + 1))}; if (std::chrono::abs(median) <= WARN_THRESHOLD) { - SetMedianTimeOffsetWarning(std::nullopt); + node::SetMedianTimeOffsetWarning(std::nullopt); uiInterface.NotifyAlertChanged(); return false; } @@ -63,7 +63,7 @@ bool TimeOffsets::WarnIfOutOfSync() const "RPC methods to get more info." ), Ticks(WARN_THRESHOLD))}; LogWarning("%s\n", msg.original); - SetMedianTimeOffsetWarning(msg); + node::SetMedianTimeOffsetWarning(msg); uiInterface.NotifyAlertChanged(); return true; } diff --git a/src/warnings.cpp b/src/node/warnings.cpp similarity index 80% rename from src/warnings.cpp rename to src/node/warnings.cpp index 38c0554cf2..9d2239e64a 100644 --- a/src/warnings.cpp +++ b/src/node/warnings.cpp @@ -5,10 +5,11 @@ #include // IWYU pragma: keep -#include +#include #include #include +#include #include #include @@ -19,6 +20,7 @@ static bilingual_str g_misc_warnings GUARDED_BY(g_warnings_mutex); static bool fLargeWorkInvalidChainFound GUARDED_BY(g_warnings_mutex) = false; static std::optional g_timeoffset_warning GUARDED_BY(g_warnings_mutex){}; +namespace node { void SetMiscWarning(const bilingual_str& warning) { LOCK(g_warnings_mutex); @@ -63,3 +65,18 @@ std::vector GetWarnings() return warnings; } + +UniValue GetWarningsForRpc(bool use_deprecated) +{ + if (use_deprecated) { + const auto all_warnings{GetWarnings()}; + return all_warnings.empty() ? "" : all_warnings.back().original; + } + + UniValue warnings{UniValue::VARR}; + for (auto&& warning : GetWarnings()) { + warnings.push_back(std::move(warning.original)); + } + return warnings; +} +} // namespace node diff --git a/src/warnings.h b/src/node/warnings.h similarity index 61% rename from src/warnings.h rename to src/node/warnings.h index 79dc2ffabf..7766f1dbc9 100644 --- a/src/warnings.h +++ b/src/node/warnings.h @@ -3,20 +3,29 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_WARNINGS_H -#define BITCOIN_WARNINGS_H +#ifndef BITCOIN_NODE_WARNINGS_H +#define BITCOIN_NODE_WARNINGS_H #include #include #include +class UniValue; struct bilingual_str; +namespace node { void SetMiscWarning(const bilingual_str& warning); void SetfLargeWorkInvalidChainFound(bool flag); /** Pass std::nullopt to disable the warning */ void SetMedianTimeOffsetWarning(std::optional warning); /** Return potential problems detected by the node. */ std::vector GetWarnings(); +/** + * RPC helper function that wraps GetWarnings. Returns a UniValue::VSTR + * with the latest warning if use_deprecated is set to true, or a + * UniValue::VARR with all warnings otherwise. + */ +UniValue GetWarningsForRpc(bool use_deprecated); +} // namespace node -#endif // BITCOIN_WARNINGS_H +#endif // BITCOIN_NODE_WARNINGS_H diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 46b0ae161f..cf0f67d9d3 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -1308,7 +1309,7 @@ RPCHelpMan getblockchaininfo() } } - obj.pushKV("warnings", GetNodeWarnings(IsDeprecatedRPCEnabled("warnings"))); + obj.pushKV("warnings", node::GetWarningsForRpc(IsDeprecatedRPCEnabled("warnings"))); return obj; }, }; diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp index 6412fb35ec..22090306c6 100644 --- a/src/rpc/mining.cpp +++ b/src/rpc/mining.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -454,7 +455,7 @@ static RPCHelpMan getmininginfo() obj.pushKV("networkhashps", getnetworkhashps().HandleRequest(request)); obj.pushKV("pooledtx", (uint64_t)mempool.size()); obj.pushKV("chain", chainman.GetParams().GetChainTypeString()); - obj.pushKV("warnings", GetNodeWarnings(IsDeprecatedRPCEnabled("warnings"))); + obj.pushKV("warnings", node::GetWarningsForRpc(IsDeprecatedRPCEnabled("warnings"))); return obj; }, }; diff --git a/src/rpc/net.cpp b/src/rpc/net.cpp index 1cc55f891a..4003e41098 100644 --- a/src/rpc/net.cpp +++ b/src/rpc/net.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -715,7 +716,7 @@ static RPCHelpMan getnetworkinfo() } } obj.pushKV("localaddresses", std::move(localAddresses)); - obj.pushKV("warnings", GetNodeWarnings(IsDeprecatedRPCEnabled("warnings"))); + obj.pushKV("warnings", node::GetWarningsForRpc(IsDeprecatedRPCEnabled("warnings"))); return obj; }, }; diff --git a/src/rpc/util.cpp b/src/rpc/util.cpp index bb1aef63f4..4df4466c49 100644 --- a/src/rpc/util.cpp +++ b/src/rpc/util.cpp @@ -5,17 +5,17 @@ #include // IWYU pragma: keep #include -#include #include #include #include #include -#include