diff options
| author | Luke Dashjr <[email protected]> | 2020-02-17 01:53:13 +0000 |
|---|---|---|
| committer | Luke Dashjr <[email protected]> | 2020-02-21 19:10:04 +0000 |
| commit | c31bc5bcfddf440e9a1713f7ba2ca2bf9cfa8e2e (patch) | |
| tree | 7d04a6ac6765a3591963d9420d68d2c64620cbd3 /src/rpc/util.cpp | |
| parent | Bugfix: GUI: Use unsigned long long type to avoid implicit conversion of MSB ... (diff) | |
| download | discoin-c31bc5bcfddf440e9a1713f7ba2ca2bf9cfa8e2e.tar.xz discoin-c31bc5bcfddf440e9a1713f7ba2ca2bf9cfa8e2e.zip | |
Consolidate service flag bit-to-name conversion to a shared serviceFlagToStr function
Side effect: this results in the RPC showing unknown service bits as "UNKNOWN[n]" like the GUI.
Note that there is no common mask-to-vector<string> function because both GUI and RPC would need to iterate through it to convert to their desired target formats.
Diffstat (limited to 'src/rpc/util.cpp')
| -rw-r--r-- | src/rpc/util.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/rpc/util.cpp b/src/rpc/util.cpp index 78586c22f..c0bc5c1f3 100644 --- a/src/rpc/util.cpp +++ b/src/rpc/util.cpp @@ -736,18 +736,15 @@ std::vector<CScript> EvalDescriptorStringOrObject(const UniValue& scanobject, Fl UniValue GetServicesNames(ServiceFlags services) { + const uint64_t services_n = services; UniValue servicesNames(UniValue::VARR); - if (services & NODE_NETWORK) - servicesNames.push_back("NETWORK"); - if (services & NODE_GETUTXO) - servicesNames.push_back("GETUTXO"); - if (services & NODE_BLOOM) - servicesNames.push_back("BLOOM"); - if (services & NODE_WITNESS) - servicesNames.push_back("WITNESS"); - if (services & NODE_NETWORK_LIMITED) - servicesNames.push_back("NETWORK_LIMITED"); + for (int i = 0; i < 64; ++i) { + const uint64_t mask = 1ull << i; + if (services_n & mask) { + servicesNames.push_back(serviceFlagToStr(mask, i)); + } + } return servicesNames; } |