From 03bc20ff76dd75c20a98a302cc8c016c0a8706cf Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Tue, 12 Aug 2014 07:54:09 +0200 Subject: [PATCH 1/2] Don't poll showmyip.com, it doesn't exist anymore Fixes #4679. This leaves us with only one candidate, checkip.dyndns.org. GetMyExternalIP should be phased out as soon as possible. Rebased-From: c33b983 --- src/net.cpp | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index 5f284e0e2..54b7e6ca4 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -350,7 +350,7 @@ bool GetMyExternalIP(CNetAddr& ipRet) const char* pszKeyword; for (int nLookup = 0; nLookup <= 1; nLookup++) - for (int nHost = 1; nHost <= 2; nHost++) + for (int nHost = 1; nHost <= 1; nHost++) { // We should be phasing out our use of sites like these. If we need // replacements, we should ask for volunteers to put this simple @@ -375,25 +375,6 @@ bool GetMyExternalIP(CNetAddr& ipRet) pszKeyword = "Address:"; } - else if (nHost == 2) - { - addrConnect = CService("74.208.43.192", 80); // www.showmyip.com - - if (nLookup == 1) - { - CService addrIP("www.showmyip.com", 80, true); - if (addrIP.IsValid()) - addrConnect = addrIP; - } - - pszGet = "GET /simple/ HTTP/1.1\r\n" - "Host: www.showmyip.com\r\n" - "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)\r\n" - "Connection: close\r\n" - "\r\n"; - - pszKeyword = NULL; // Returns just IP address - } if (GetMyExternalIP2(addrConnect, pszGet, pszKeyword, ipRet)) return true; From 81f8d22c9e834cf854400b039cb8b963e0607729 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Tue, 29 Jul 2014 11:04:46 -0400 Subject: [PATCH 2/2] Avoid querying DNS seeds, if we have open connections. The goal is to increase independence and privacy. --- src/init.cpp | 3 ++- src/net.cpp | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/init.cpp b/src/init.cpp index 2d1578e98..d321ba914 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -224,7 +224,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 54b7e6ca4..02e870901 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;