net: decouple state independent service flags from desirable ones

This former one will be moved to the peer manager class in the
following-up commit.
This commit is contained in:
furszy 2023-07-26 14:21:21 -03:00
parent 97df4e3887
commit f9ac96b8d6
No known key found for this signature in database
GPG key ID: 5DD23CCC686AA623
3 changed files with 11 additions and 6 deletions

View file

@ -4,7 +4,7 @@ Utility to generate the seeds.txt list that is compiled into the client
(see [src/chainparamsseeds.h](/src/chainparamsseeds.h) and other utilities in [contrib/seeds](/contrib/seeds)). (see [src/chainparamsseeds.h](/src/chainparamsseeds.h) and other utilities in [contrib/seeds](/contrib/seeds)).
Be sure to update `PATTERN_AGENT` in `makeseeds.py` to include the current version, Be sure to update `PATTERN_AGENT` in `makeseeds.py` to include the current version,
and remove old versions as necessary (at a minimum when GetDesirableServiceFlags and remove old versions as necessary (at a minimum when SeedsServiceFlags()
changes its default return value, as those are the services which seeds are added changes its default return value, as those are the services which seeds are added
to addrman with). to addrman with).

View file

@ -202,7 +202,7 @@ static std::vector<CAddress> ConvertSeeds(const std::vector<uint8_t> &vSeedsIn)
while (!s.eof()) { while (!s.eof()) {
CService endpoint; CService endpoint;
s >> endpoint; s >> endpoint;
CAddress addr{endpoint, GetDesirableServiceFlags(NODE_NONE)}; CAddress addr{endpoint, SeedsServiceFlags()};
addr.nTime = rng.rand_uniform_delay(Now<NodeSeconds>() - one_week, -one_week); addr.nTime = rng.rand_uniform_delay(Now<NodeSeconds>() - one_week, -one_week);
LogPrint(BCLog::NET, "Added hardcoded seed: %s\n", addr.ToStringAddrPort()); LogPrint(BCLog::NET, "Added hardcoded seed: %s\n", addr.ToStringAddrPort());
vSeedsOut.push_back(addr); vSeedsOut.push_back(addr);
@ -2273,7 +2273,7 @@ void CConnman::ThreadDNSAddressSeed()
AddAddrFetch(seed); AddAddrFetch(seed);
} else { } else {
std::vector<CAddress> vAdd; std::vector<CAddress> vAdd;
ServiceFlags requiredServiceBits = GetDesirableServiceFlags(NODE_NONE); constexpr ServiceFlags requiredServiceBits{SeedsServiceFlags()};
std::string host = strprintf("x%x.%s", requiredServiceBits, seed); std::string host = strprintf("x%x.%s", requiredServiceBits, seed);
CNetAddr resolveSource; CNetAddr resolveSource;
if (!resolveSource.SetInternal(host)) { if (!resolveSource.SetInternal(host)) {

View file

@ -330,12 +330,17 @@ std::vector<std::string> serviceFlagsToStr(uint64_t flags);
* guaranteed to not change dependent on state - ie they are suitable for * guaranteed to not change dependent on state - ie they are suitable for
* use when describing peers which we know to be desirable, but for which * use when describing peers which we know to be desirable, but for which
* we do not have a confirmed set of service flags. * we do not have a confirmed set of service flags.
*
* If the NODE_NONE return value is changed, contrib/seeds/makeseeds.py
* should be updated appropriately to filter for the same nodes.
*/ */
ServiceFlags GetDesirableServiceFlags(ServiceFlags services); ServiceFlags GetDesirableServiceFlags(ServiceFlags services);
/**
* State independent service flags.
* If the return value is changed, contrib/seeds/makeseeds.py
* should be updated appropriately to filter for nodes with
* desired service flags (compatible with our new flags).
*/
constexpr ServiceFlags SeedsServiceFlags() { return ServiceFlags(NODE_NETWORK | NODE_WITNESS); }
/** Set the current IBD status in order to figure out the desirable service flags */ /** Set the current IBD status in order to figure out the desirable service flags */
void SetServiceFlagsIBDCache(bool status); void SetServiceFlagsIBDCache(bool status);