rpc: Remove special case for unknown service flags

This commit is contained in:
MarcoFalke 2020-05-29 18:05:40 -04:00
parent cb88de3e3d
commit fa1433ac1b
No known key found for this signature in database
GPG Key ID: CE2B75697E69A548
2 changed files with 11 additions and 6 deletions

View File

@ -5,8 +5,8 @@
#include <protocol.h> #include <protocol.h>
#include <util/system.h>
#include <util/strencodings.h> #include <util/strencodings.h>
#include <util/system.h>
#ifndef WIN32 #ifndef WIN32
# include <arpa/inet.h> # include <arpa/inet.h>
@ -216,11 +216,7 @@ static std::string serviceFlagToStr(size_t bit)
std::ostringstream stream; std::ostringstream stream;
stream.imbue(std::locale::classic()); stream.imbue(std::locale::classic());
stream << "UNKNOWN["; stream << "UNKNOWN[";
if (bit < 8) { stream << "2^" << bit;
stream << service_flag;
} else {
stream << "2^" << bit;
}
stream << "]"; stream << "]";
return stream.str(); return stream.str();
} }

View File

@ -28,6 +28,7 @@ from test_framework.messages import (
NODE_WITNESS, NODE_WITNESS,
) )
def assert_net_servicesnames(servicesflag, servicenames): def assert_net_servicesnames(servicesflag, servicenames):
"""Utility that checks if all flags are correctly decoded in """Utility that checks if all flags are correctly decoded in
`getpeerinfo` and `getnetworkinfo`. `getpeerinfo` and `getnetworkinfo`.
@ -40,6 +41,7 @@ def assert_net_servicesnames(servicesflag, servicenames):
servicesflag_generated |= getattr(test_framework.messages, 'NODE_' + servicename) servicesflag_generated |= getattr(test_framework.messages, 'NODE_' + servicename)
assert servicesflag_generated == servicesflag assert servicesflag_generated == servicesflag
class NetTest(BitcoinTestFramework): class NetTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.setup_clean_chain = True self.setup_clean_chain = True
@ -57,6 +59,7 @@ class NetTest(BitcoinTestFramework):
self._test_getnetworkinfo() self._test_getnetworkinfo()
self._test_getaddednodeinfo() self._test_getaddednodeinfo()
self._test_getpeerinfo() self._test_getpeerinfo()
self.test_service_flags()
self._test_getnodeaddresses() self._test_getnodeaddresses()
def _test_connection_count(self): def _test_connection_count(self):
@ -139,6 +142,11 @@ class NetTest(BitcoinTestFramework):
for info in peer_info: for info in peer_info:
assert_net_servicesnames(int(info[0]["services"], 0x10), info[0]["servicesnames"]) assert_net_servicesnames(int(info[0]["services"], 0x10), info[0]["servicesnames"])
def test_service_flags(self):
self.nodes[0].add_p2p_connection(P2PInterface(), services=(1 << 4) | (1 << 63))
assert_equal(['UNKNOWN[2^4]', 'UNKNOWN[2^63]'], self.nodes[0].getpeerinfo()[-1]['servicesnames'])
self.nodes[0].disconnect_p2ps()
def _test_getnodeaddresses(self): def _test_getnodeaddresses(self):
self.nodes[0].add_p2p_connection(P2PInterface()) self.nodes[0].add_p2p_connection(P2PInterface())
@ -174,5 +182,6 @@ class NetTest(BitcoinTestFramework):
node_addresses = self.nodes[0].getnodeaddresses(LARGE_REQUEST_COUNT) node_addresses = self.nodes[0].getnodeaddresses(LARGE_REQUEST_COUNT)
assert_greater_than(LARGE_REQUEST_COUNT, len(node_addresses)) assert_greater_than(LARGE_REQUEST_COUNT, len(node_addresses))
if __name__ == '__main__': if __name__ == '__main__':
NetTest().main() NetTest().main()