mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-11 12:22:39 -03:00
net: switch to dummy internal ip for dns seed source
This addresss the TODO to avoid resolving twice.
This commit is contained in:
parent
6d0bd5b73d
commit
6cdc488e36
3 changed files with 19 additions and 25 deletions
|
@ -124,12 +124,12 @@ public:
|
||||||
assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"));
|
assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"));
|
||||||
|
|
||||||
// Note that of those with the service bits flag, most only support a subset of possible options
|
// Note that of those with the service bits flag, most only support a subset of possible options
|
||||||
vSeeds.push_back(CDNSSeedData("bitcoin.sipa.be", "seed.bitcoin.sipa.be", true)); // Pieter Wuille, only supports x1, x5, x9, and xd
|
vSeeds.emplace_back("seed.bitcoin.sipa.be", true); // Pieter Wuille, only supports x1, x5, x9, and xd
|
||||||
vSeeds.push_back(CDNSSeedData("bluematt.me", "dnsseed.bluematt.me", true)); // Matt Corallo, only supports x9
|
vSeeds.emplace_back("dnsseed.bluematt.me", true); // Matt Corallo, only supports x9
|
||||||
vSeeds.push_back(CDNSSeedData("dashjr.org", "dnsseed.bitcoin.dashjr.org")); // Luke Dashjr
|
vSeeds.emplace_back("dnsseed.bitcoin.dashjr.org"); // Luke Dashjr
|
||||||
vSeeds.push_back(CDNSSeedData("bitcoinstats.com", "seed.bitcoinstats.com", true)); // Christian Decker, supports x1 - xf
|
vSeeds.emplace_back("seed.bitcoinstats.com", true); // Christian Decker, supports x1 - xf
|
||||||
vSeeds.push_back(CDNSSeedData("bitcoin.jonasschnelli.ch", "seed.bitcoin.jonasschnelli.ch", true)); // Jonas Schnelli, only supports x1, x5, x9, and xd
|
vSeeds.emplace_back("seed.bitcoin.jonasschnelli.ch", true); // Jonas Schnelli, only supports x1, x5, x9, and xd
|
||||||
vSeeds.push_back(CDNSSeedData("petertodd.org", "seed.btc.petertodd.org", true)); // Peter Todd, only supports x1, x5, x9, and xd
|
vSeeds.emplace_back("seed.btc.petertodd.org", true); // Peter Todd, only supports x1, x5, x9, and xd
|
||||||
|
|
||||||
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,0);
|
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,0);
|
||||||
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,5);
|
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,5);
|
||||||
|
@ -225,10 +225,10 @@ public:
|
||||||
vFixedSeeds.clear();
|
vFixedSeeds.clear();
|
||||||
vSeeds.clear();
|
vSeeds.clear();
|
||||||
// nodes with support for servicebits filtering should be at the top
|
// 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.emplace_back("testnet-seed.bitcoin.jonasschnelli.ch", true);
|
||||||
vSeeds.push_back(CDNSSeedData("petertodd.org", "seed.tbtc.petertodd.org", true));
|
vSeeds.emplace_back("seed.tbtc.petertodd.org", true);
|
||||||
vSeeds.push_back(CDNSSeedData("bluematt.me", "testnet-seed.bluematt.me"));
|
vSeeds.emplace_back("testnet-seed.bluematt.me");
|
||||||
vSeeds.push_back(CDNSSeedData("bitcoin.schildbach.de", "testnet-seed.bitcoin.schildbach.de"));
|
vSeeds.emplace_back("testnet-seed.bitcoin.schildbach.de");
|
||||||
|
|
||||||
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,111);
|
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,111);
|
||||||
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,196);
|
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,196);
|
||||||
|
|
|
@ -15,9 +15,9 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
struct CDNSSeedData {
|
struct CDNSSeedData {
|
||||||
std::string name, host;
|
std::string host;
|
||||||
bool supportsServiceBitsFiltering;
|
bool supportsServiceBitsFiltering;
|
||||||
CDNSSeedData(const std::string &strName, const std::string &strHost, bool supportsServiceBitsFilteringIn = false) : name(strName), host(strHost), supportsServiceBitsFiltering(supportsServiceBitsFilteringIn) {}
|
CDNSSeedData(const std::string &strHost, bool supportsServiceBitsFilteringIn = false) : host(strHost), supportsServiceBitsFiltering(supportsServiceBitsFilteringIn) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SeedSpec6 {
|
struct SeedSpec6 {
|
||||||
|
|
20
src/net.cpp
20
src/net.cpp
|
@ -1604,7 +1604,12 @@ void CConnman::ThreadDNSAddressSeed()
|
||||||
std::vector<CNetAddr> vIPs;
|
std::vector<CNetAddr> vIPs;
|
||||||
std::vector<CAddress> vAdd;
|
std::vector<CAddress> vAdd;
|
||||||
ServiceFlags requiredServiceBits = nRelevantServices;
|
ServiceFlags requiredServiceBits = nRelevantServices;
|
||||||
if (LookupHost(GetDNSHost(seed, &requiredServiceBits).c_str(), vIPs, 0, true))
|
std::string host = GetDNSHost(seed, &requiredServiceBits);
|
||||||
|
CNetAddr resolveSource;
|
||||||
|
if (!resolveSource.SetInternal(host)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (LookupHost(host.c_str(), vIPs, 0, true))
|
||||||
{
|
{
|
||||||
BOOST_FOREACH(const CNetAddr& ip, vIPs)
|
BOOST_FOREACH(const CNetAddr& ip, vIPs)
|
||||||
{
|
{
|
||||||
|
@ -1614,18 +1619,7 @@ void CConnman::ThreadDNSAddressSeed()
|
||||||
vAdd.push_back(addr);
|
vAdd.push_back(addr);
|
||||||
found++;
|
found++;
|
||||||
}
|
}
|
||||||
}
|
addrman.Add(vAdd, resolveSource);
|
||||||
if (interruptNet) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// TODO: The seed name resolve may fail, yielding an IP of [::], which results in
|
|
||||||
// addrman assigning the same source to results from different seeds.
|
|
||||||
// This should switch to a hard-coded stable dummy IP for each seed name, so that the
|
|
||||||
// resolve is not required at all.
|
|
||||||
if (!vIPs.empty()) {
|
|
||||||
CService seedSource;
|
|
||||||
Lookup(seed.name.c_str(), seedSource, 0, true);
|
|
||||||
addrman.Add(vAdd, seedSource);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue