From 026b9dfd6e833b4484e73d0b0311e16f3751deed Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Tue, 29 Jul 2014 11:04:46 -0400 Subject: Avoid querying DNS seeds, if we have open connections. The goal is to increase independence and privacy. Rebased-From: 2e7009d --- doc/release-notes.md | 1 + src/init.cpp | 3 ++- src/net.cpp | 12 ++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/doc/release-notes.md b/doc/release-notes.md index d58fcc9035..7dbc0e30a8 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -52,6 +52,7 @@ Protocol and network code: - Add a way to limit deserialized string lengths and use it - Add a new checkpoint at block 295,000 - Increase IsStandard() scriptSig length +- Avoid querying DNS seeds, if we have open connections Wallet: - Check redeemScript size does not exceed 520 byte limit diff --git a/src/init.cpp b/src/init.cpp index 64b835c9aa..0703a1a594 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -219,7 +219,8 @@ std::string HelpMessage(HelpMessageMode hmm) strUsage += " -connect= " + _("Connect only to the specified node(s)") + "\n"; strUsage += " -discover " + _("Discover own IP address (default: 1 when listening and no -externalip)") + "\n"; strUsage += " -dns " + _("Allow DNS lookups for -addnode, -seednode and -connect") + " " + _("(default: 1)") + "\n"; - strUsage += " -dnsseed " + _("Find peers using DNS lookup (default: 1 unless -connect)") + "\n"; + strUsage += " -dnsseed " + _("Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect)") + "\n"; + strUsage += " -forcednsseed " + _("Always query for peer addresses via DNS lookup (default: 0)") + "\n"; strUsage += " -externalip= " + _("Specify your own public address") + "\n"; strUsage += " -listen " + _("Accept connections from outside (default: 1 if no -proxy or -connect)") + "\n"; strUsage += " -maxconnections= " + _("Maintain at most connections to peers (default: 125)") + "\n"; diff --git a/src/net.cpp b/src/net.cpp index f979538927..a1ca140e19 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1166,6 +1166,18 @@ void MapPort(bool) void ThreadDNSAddressSeed() { + // goal: only query DNS seeds if address need is acute + if ((addrman.size() > 0) && + (!GetBoolArg("-forcednsseed", false))) { + MilliSleep(11 * 1000); + + LOCK(cs_vNodes); + if (vNodes.size() >= 2) { + LogPrintf("P2P peers available. Skipped DNS seeding.\n"); + return; + } + } + const vector &vSeeds = Params().DNSSeeds(); int found = 0; -- cgit v1.2.3