Add DNS seed support for testnet

This commit is contained in:
Peter Todd 2013-01-29 23:13:17 -05:00
parent 2835080e16
commit af8998824c
1 changed files with 25 additions and 20 deletions

View File

@ -1145,11 +1145,17 @@ void MapPort()
// Each pair gives a source name and a seed name. // Each pair gives a source name and a seed name.
// The first name is used as information source for addrman. // The first name is used as information source for addrman.
// The second name should resolve to a list of seed addresses. // The second name should resolve to a list of seed addresses.
static const char *strDNSSeed[][2] = { static const char *strMainNetDNSSeed[][2] = {
{"bitcoin.sipa.be", "seed.bitcoin.sipa.be"}, {"bitcoin.sipa.be", "seed.bitcoin.sipa.be"},
{"bluematt.me", "dnsseed.bluematt.me"}, {"bluematt.me", "dnsseed.bluematt.me"},
{"dashjr.org", "dnsseed.bitcoin.dashjr.org"}, {"dashjr.org", "dnsseed.bitcoin.dashjr.org"},
{"xf2.org", "bitseed.xf2.org"}, {"xf2.org", "bitseed.xf2.org"},
{NULL, NULL}
};
static const char *strTestNetDNSSeed[][2] = {
{"bitcoin.petertodd.org", "testnet-seed.bitcoin.petertodd.org"},
{NULL, NULL}
}; };
void ThreadDNSAddressSeed(void* parg) void ThreadDNSAddressSeed(void* parg)
@ -1175,32 +1181,31 @@ void ThreadDNSAddressSeed(void* parg)
void ThreadDNSAddressSeed2(void* parg) void ThreadDNSAddressSeed2(void* parg)
{ {
static const char *(*strDNSSeed)[2] = fTestNet ? strTestNetDNSSeed : strMainNetDNSSeed;
printf("ThreadDNSAddressSeed started\n"); printf("ThreadDNSAddressSeed started\n");
int found = 0; int found = 0;
if (!fTestNet) printf("Loading addresses from DNS seeds (could take a while)\n");
{
printf("Loading addresses from DNS seeds (could take a while)\n");
for (unsigned int seed_idx = 0; seed_idx < ARRAYLEN(strDNSSeed); seed_idx++) { for (unsigned int seed_idx = 0; strDNSSeed[seed_idx][0] != NULL; seed_idx++) {
if (HaveNameProxy()) { if (HaveNameProxy()) {
AddOneShot(strDNSSeed[seed_idx][1]); AddOneShot(strDNSSeed[seed_idx][1]);
} else { } else {
vector<CNetAddr> vaddr; vector<CNetAddr> vaddr;
vector<CAddress> vAdd; vector<CAddress> vAdd;
if (LookupHost(strDNSSeed[seed_idx][1], vaddr)) if (LookupHost(strDNSSeed[seed_idx][1], vaddr))
{
BOOST_FOREACH(CNetAddr& ip, vaddr)
{ {
BOOST_FOREACH(CNetAddr& ip, vaddr) int nOneDay = 24*3600;
{ CAddress addr = CAddress(CService(ip, GetDefaultPort()));
int nOneDay = 24*3600; addr.nTime = GetTime() - 3*nOneDay - GetRand(4*nOneDay); // use a random age between 3 and 7 days old
CAddress addr = CAddress(CService(ip, GetDefaultPort())); vAdd.push_back(addr);
addr.nTime = GetTime() - 3*nOneDay - GetRand(4*nOneDay); // use a random age between 3 and 7 days old found++;
vAdd.push_back(addr);
found++;
}
} }
addrman.Add(vAdd, CNetAddr(strDNSSeed[seed_idx][0], true));
} }
addrman.Add(vAdd, CNetAddr(strDNSSeed[seed_idx][0], true));
} }
} }