diff options
-rw-r--r-- | src/protocol.cpp | 7 | ||||
-rw-r--r-- | src/protocol.h | 7 | ||||
-rw-r--r-- | src/qt/guiutil.cpp | 2 | ||||
-rw-r--r-- | src/rpc/util.cpp | 2 |
4 files changed, 12 insertions, 6 deletions
diff --git a/src/protocol.cpp b/src/protocol.cpp index 737baff36b..56071f4748 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -195,9 +195,10 @@ const std::vector<std::string> &getAllNetMessageTypes() return allNetMessageTypesVec; } -std::string serviceFlagToStr(const uint64_t mask, const int bit) +std::string serviceFlagToStr(size_t bit) { - switch (ServiceFlags(mask)) { + const uint64_t service_flag = 1ULL << bit; + switch ((ServiceFlags)service_flag) { case NODE_NONE: abort(); // impossible case NODE_NETWORK: return "NETWORK"; case NODE_GETUTXO: return "GETUTXO"; @@ -211,7 +212,7 @@ std::string serviceFlagToStr(const uint64_t mask, const int bit) stream.imbue(std::locale::classic()); stream << "UNKNOWN["; if (bit < 8) { - stream << mask; + stream << service_flag; } else { stream << "2^" << bit; } diff --git a/src/protocol.h b/src/protocol.h index c12bec9bf3..4fb4594fbb 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -288,7 +288,12 @@ enum ServiceFlags : uint64_t { // BIP process. }; -std::string serviceFlagToStr(uint64_t mask, int bit); +/** + * Convert a service flag (NODE_*) to a human readable string. + * It supports unknown service flags which will be returned as "UNKNOWN[...]". + * @param[in] bit the service flag is calculated as (1 << bit) + */ +std::string serviceFlagToStr(size_t bit); /** * Gets the set of service flags which are "desirable" for a given peer. diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index e78e400f07..d2892f32c7 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -759,7 +759,7 @@ QString formatServicesStr(quint64 mask) uint64_t check = 1ull << i; if (mask & check) { - strList.append(QString::fromStdString(serviceFlagToStr(mask, i))); + strList.append(QString::fromStdString(serviceFlagToStr(i))); } } diff --git a/src/rpc/util.cpp b/src/rpc/util.cpp index 0e13d8dfce..6cd4c2664d 100644 --- a/src/rpc/util.cpp +++ b/src/rpc/util.cpp @@ -847,7 +847,7 @@ UniValue GetServicesNames(ServiceFlags services) for (int i = 0; i < 64; ++i) { const uint64_t mask = 1ull << i; if (services_n & mask) { - servicesNames.push_back(serviceFlagToStr(mask, i)); + servicesNames.push_back(serviceFlagToStr(i)); } } |