@@ -16,6 +16,14 @@ | |||
#include "chainparamsseeds.h" | |||
std::string CDNSSeedData::getHost(uint64_t requiredServiceBits) const { | |||
//use default host for non-filter-capable seeds or if we use the default service bits (NODE_NETWORK) | |||
if (!supportsServiceBitsFiltering || requiredServiceBits == NODE_NETWORK) | |||
return host; | |||
return strprintf("x%x.%s", requiredServiceBits, host); | |||
} | |||
static CBlock CreateGenesisBlock(const char* pszTimestamp, const CScript& genesisOutputScript, uint32_t nTime, uint32_t nNonce, uint32_t nBits, int32_t nVersion, const CAmount& genesisReward) | |||
{ | |||
CMutableTransaction txNew; | |||
@@ -197,6 +205,8 @@ public: | |||
vFixedSeeds.clear(); | |||
vSeeds.clear(); | |||
// nodes with support for servicebits filtering should be at the top | |||
vSeeds.push_back(CDNSSeedData("testnetbitcoin.jonasschnelli.ch", "testnet-seed.bitcoin.jonasschnelli.ch", true)); | |||
vSeeds.push_back(CDNSSeedData("bitcoin.petertodd.org", "testnet-seed.bitcoin.petertodd.org")); | |||
vSeeds.push_back(CDNSSeedData("bluematt.me", "testnet-seed.bluematt.me")); | |||
vSeeds.push_back(CDNSSeedData("bitcoin.schildbach.de", "testnet-seed.bitcoin.schildbach.de")); |
@@ -13,9 +13,12 @@ | |||
#include <vector> | |||
struct CDNSSeedData { | |||
class CDNSSeedData { | |||
public: | |||
std::string name, host; | |||
CDNSSeedData(const std::string &strName, const std::string &strHost) : name(strName), host(strHost) {} | |||
bool supportsServiceBitsFiltering; | |||
std::string getHost(uint64_t requiredServiceBits) const; | |||
CDNSSeedData(const std::string &strName, const std::string &strHost, bool supportsServiceBitsFilteringIn = false) : name(strName), host(strHost), supportsServiceBitsFiltering(supportsServiceBitsFilteringIn) {} | |||
}; | |||
struct SeedSpec6 { |
@@ -1466,12 +1466,13 @@ void ThreadDNSAddressSeed() | |||
} else { | |||
std::vector<CNetAddr> vIPs; | |||
std::vector<CAddress> vAdd; | |||
if (LookupHost(seed.host.c_str(), vIPs, 0, true)) | |||
uint64_t requiredServiceBits = NODE_NETWORK; | |||
if (LookupHost(seed.getHost(requiredServiceBits).c_str(), vIPs, 0, true)) | |||
{ | |||
BOOST_FOREACH(const CNetAddr& ip, vIPs) | |||
{ | |||
int nOneDay = 24*3600; | |||
CAddress addr = CAddress(CService(ip, Params().GetDefaultPort())); | |||
CAddress addr = CAddress(CService(ip, Params().GetDefaultPort()), requiredServiceBits); | |||
addr.nTime = GetTime() - 3*nOneDay - GetRand(4*nOneDay); // use a random age between 3 and 7 days old | |||
vAdd.push_back(addr); | |||
found++; |