diff --git a/src/bitcoin-cli.cpp b/src/bitcoin-cli.cpp index 75911d00874..e51d4a3c65f 100644 --- a/src/bitcoin-cli.cpp +++ b/src/bitcoin-cli.cpp @@ -481,6 +481,16 @@ private: } return str; } + std::string ServicesList(const UniValue& services) + { + std::vector v; + for (size_t i = 0; i < services.size(); ++i) { + std::string s{ToLower((services[i].get_str()))}; + std::ranges::replace(s, '_', ' '); + v.push_back(s); + } + return Join(v, ", "); + } public: static constexpr int ID_PEERINFO = 0; @@ -572,7 +582,8 @@ public: } // Generate report header. - std::string result{strprintf("%s client %s%s - server %i%s\n\n", CLIENT_NAME, FormatFullVersion(), ChainToString(), networkinfo["protocolversion"].getInt(), networkinfo["subversion"].get_str())}; + const std::string_view services{DetailsRequested() ? strprintf(" - services %s", FormatServices(networkinfo["localservicesnames"])) : ""}; + std::string result{strprintf("%s client %s%s - server %i%s%s\n\n", CLIENT_NAME, FormatFullVersion(), ChainToString(), networkinfo["protocolversion"].getInt(), networkinfo["subversion"].get_str(), services)}; // Report detailed peer connections list sorted by direction and minimum ping time. if (DetailsRequested() && !m_peers.empty()) { @@ -654,6 +665,9 @@ public: } // Report local addresses, ports, and scores. + if (!DetailsRequested()) { + result += strprintf("\n\nLocal services: %s", ServicesList(networkinfo["localservicesnames"])); + } result += "\n\nLocal addresses"; const std::vector& local_addrs{networkinfo["localaddresses"].getValues()}; if (local_addrs.empty()) {