diff --git a/src/hush_utils.h b/src/hush_utils.h index 45d7efa88..991e14676 100644 --- a/src/hush_utils.h +++ b/src/hush_utils.h @@ -1797,8 +1797,10 @@ void hush_args(char *argv0) vector HUSH_nodes = {}; // Only HUSH3 and DRAGONX connect to these by default, other HACs must opt-in via -connect/-addnode - const bool ishush3 = strncmp(SMART_CHAIN_SYMBOL, "HUSH3",5) == 0 ? true : false; - const bool isdragonx = strncmp(SMART_CHAIN_SYMBOL, "DRAGONX",7) == 0 ? true : false; + const bool ishush3 = strncmp(name.c_str(), "HUSH3",5) == 0 ? true : false; + const bool isdragonx = strncmp(name.c_str(), "DRAGONX",7) == 0 ? true : false; + + LogPrint("net", "%s: ishush3=%d isdragonx=%d\n", __func__, ishush3, isdragonx); if (ishush3 || isdragonx) { HUSH_nodes = {"node1.hush.is","node2.hush.is","node3.hush.is", "node4.hush.is","node5.hush.is","node6.hush.is", @@ -1813,6 +1815,7 @@ void hush_args(char *argv0) } // Add default HUSH nodes after custom addnodes, if applicable if(HUSH_nodes.size() > 0) { + LogPrint("net", "%s: adding %d hostname-based nodes\n", __func__, HUSH_nodes.size() ); more_nodes.insert( more_nodes.end(), HUSH_nodes.begin(), HUSH_nodes.end() ); } diff --git a/src/net.cpp b/src/net.cpp index 422bccf34..7713da52e 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1690,8 +1690,8 @@ void ThreadOpenConnections() if (GetTime() - nStart > 60) { static bool done = false; if (!done) { - LogPrintf("Adding fixed seed nodes.\n"); std::vector vFixedSeeds = ConvertSeeds(Params().FixedSeeds()); + LogPrintf("Adding %d fixed seed nodes.\n", vFixedSeeds.size()); BOOST_FOREACH(CAddress fixedSeed, vFixedSeeds) { std::vector vFixedSeed; vFixedSeed.push_back(fixedSeed); @@ -1700,6 +1700,7 @@ void ThreadOpenConnections() addrman.Add(vFixedSeed, seedSource); } done = true; + LogPrintf("Done adding fixed seed nodes.\n"); } } @@ -1720,6 +1721,7 @@ void ThreadOpenConnections() } } } + LogPrint("net", "Creating %d outbound connections\n", nOutbound); assert(nOutbound <= (MAX_OUTBOUND_CONNECTIONS + MAX_FEELER_CONNECTIONS)); // "Feeler Connections" as per https://eprint.iacr.org/2015/263.pdf @@ -1751,11 +1753,14 @@ void ThreadOpenConnections() int64_t nNow = GetTime(); int nTries = 0; + LogPrint("net", "Resolving addrman collisions\n"); addrman.ResolveCollisions(); while (true) { if (ShutdownRequested()) break; + + LogPrint("net", "%s: addrman loop nTries=%d\n", __func__, nTries); CAddrInfo addr = addrman.SelectTriedCollision(); @@ -1765,17 +1770,22 @@ void ThreadOpenConnections() } // if we selected an invalid address, restart - if (!addr.IsValid() || setConnected.count(addr.GetGroup(addrman.m_asmap)) || IsLocal(addr)) + if (!addr.IsValid() || setConnected.count(addr.GetGroup(addrman.m_asmap)) || IsLocal(addr)) { + LogPrint("net", "%s: addrman loop address is not valid, or ASN exists or is local, nTries=%d\n", __func__, nTries); break; + } // If we didn't find an appropriate destination after trying 100 addresses fetched from addrman, // stop this loop, and let the outer loop run again (which sleeps, adds seed nodes, recalculates // already-connected network ranges, ...) before trying new addrman addresses. nTries++; - if (nTries > 100) + if (nTries > 100) { + LogPrint("net", "%s: addrman loop too many tries, nTries=%d\n", __func__, nTries); break; + } if (!IsReachable(addr)) { + LogPrint("net", "%s: addrman loop not reachable, nTries=%d\n", __func__, nTries); continue; } @@ -1791,8 +1801,10 @@ void ThreadOpenConnections() //TODO: why is this a good thing? // do not allow non-default ports, unless after 50 invalid addresses selected already - if (addr.GetPort() != Params().GetDefaultPort() && nTries < 50) + if (addr.GetPort() != Params().GetDefaultPort() && nTries < 50) { + LogPrint("net", "%s: addrman loop not default port, nTries=%d\n", __func__, nTries); continue; + } addrConnect = addr; break; @@ -1892,6 +1904,7 @@ void ThreadOpenAddedConnections() // if successful, this moves the passed grant to the constructed node bool OpenNetworkConnection(const CAddress& addrConnect, CSemaphoreGrant *grantOutbound, const char *pszDest, bool fOneShot, bool fFeeler) { + LogPrint("net", "%s: %s feeler=%d oneshot=%d\n", __func__, addrConnect.ToString(), fFeeler, fOneShot); // Initiate outbound network connection boost::this_thread::interruption_point(); if (!fNetworkActive) { @@ -1910,11 +1923,14 @@ bool OpenNetworkConnection(const CAddress& addrConnect, CSemaphoreGrant *grantOu } else if (FindNode(std::string(pszDest))) return false; + LogPrint("net", "%s: ConnectNode(%s)\n", __func__, addrConnect.ToString()); CNode* pnode = ConnectNode(addrConnect, pszDest); boost::this_thread::interruption_point(); - if (!pnode) + if (!pnode) { + LogPrint("net", "%s: ConnectNode(%s) FAILED\n", __func__, addrConnect.ToString()); return false; + } if (grantOutbound) grantOutbound->MoveTo(pnode->grantOutbound); pnode->fNetworkNode = true;