diff --git a/src/seeder/bitcoin.cpp b/src/seeder/bitcoin.cpp --- a/src/seeder/bitcoin.cpp +++ b/src/seeder/bitcoin.cpp @@ -42,7 +42,7 @@ nHeaderStart = vSend.size(); vSend << CMessageHeader(netMagic, pszCommand, 0); nMessageStart = vSend.size(); - // printf("%s: SEND %s\n", ToString(you).c_str(), pszCommand); + // printf("%s: SEND %s\n", ToString(you).c_str(), pszCommand); } void AbortMessage() { @@ -118,8 +118,7 @@ } bool ProcessMessage(std::string strCommand, CDataStream &recv) { - // printf("%s: RECV %s\n", ToString(you).c_str(), - // strCommand.c_str()); + // printf("%s: RECV %s\n", ToString(you).c_str(), strCommand.c_str()); if (strCommand == "version") { int64_t nTime; CAddress addrMe; @@ -155,7 +154,7 @@ std::vector vAddrNew; recv >> vAddrNew; // printf("%s: got %i addresses\n", ToString(you).c_str(), - // (int)vAddrNew.size()); + // (int)vAddrNew.size()); int64_t now = time(nullptr); std::vector::iterator it = vAddrNew.begin(); if (vAddrNew.size() > 1) { @@ -163,15 +162,17 @@ } while (it != vAddrNew.end()) { CAddress &addr = *it; - // printf("%s: got address %s\n", ToString(you).c_str(), + // printf("%s: got address %s\n", ToString(you).c_str(), // addr.ToString().c_str(), (int)(vAddr->size())); it++; - if (addr.nTime <= 100000000 || addr.nTime > now + 600) + if (addr.nTime <= 100000000 || addr.nTime > now + 600) { addr.nTime = now - 5 * 86400; - if (addr.nTime > now - 604800) vAddr->push_back(addr); - // printf("%s: added address %s (#%i)\n", - // ToString(you).c_str(), addr.ToString().c_str(), - // (int)(vAddr->size())); + } + if (addr.nTime > now - 604800) { + vAddr->push_back(addr); + } + // printf("%s: added address %s (#%i)\n", ToString(you).c_str(), + // addr.ToString().c_str(), (int)(vAddr->size())); if (vAddr->size() > 1000) { doneAfter = 1; return true; @@ -233,17 +234,20 @@ CDataStream vMsg(vRecv.begin(), vRecv.begin() + nMessageSize, vRecv.GetType(), vRecv.GetVersion()); vRecv.ignore(nMessageSize); - if (ProcessMessage(strCommand, vMsg)) return true; - // printf("%s: done processing %s\n", ToString(you).c_str(), - // strCommand.c_str()); + if (ProcessMessage(strCommand, vMsg)) { + return true; + } + // printf("%s: done processing %s\n", ToString(you).c_str(), + // strCommand.c_str()); } while (1); return false; } public: CSeederNode(const CService &ip, std::vector *vAddrIn) - : vSend(SER_NETWORK, 0), vRecv(SER_NETWORK, 0), nHeaderStart(-1), - nMessageStart(-1), nVersion(0), vAddr(vAddrIn), ban(0), doneAfter(0), + : sock(INVALID_SOCKET), vSend(SER_NETWORK, 0), vRecv(SER_NETWORK, 0), + nHeaderStart(-1), nMessageStart(-1), nVersion(0), vAddr(vAddrIn), + ban(0), doneAfter(0), you(ip, ServiceFlags(NODE_NETWORK | NODE_BITCOIN_CASH)) { if (time(nullptr) > 1329696000) { vSend.SetVersion(209); @@ -261,16 +265,27 @@ bool proxyConnectionFailed = false; if (GetProxy(you.GetNetwork(), proxy)) { + sock = CreateSocket(proxy.proxy); + if (sock == INVALID_SOCKET) { + return false; + } connected = ConnectThroughProxy( proxy, you.ToStringIP(), you.GetPort(), sock, nConnectTimeout, &proxyConnectionFailed); } else { + // no proxy needed (none set for target network) + sock = CreateSocket(you); + if (sock == INVALID_SOCKET) { + return false; + } // no proxy needed (none set for target network) connected = ConnectSocketDirectly(you, sock, nConnectTimeout); } } if (!connected) { + // printf("Cannot connect to %s\n", ToString(you).c_str()); + CloseSocket(sock); return false; } @@ -306,7 +321,7 @@ memcpy(&vRecv[nPos], pchBuf, nBytes); } else if (nBytes == 0) { // printf("%s: BAD (connection closed prematurely)\n", - // ToString(you).c_str()); + // ToString(you).c_str()); res = false; break; } else { @@ -347,7 +362,7 @@ clientV = node.GetClientVersion(); clientSV = node.GetClientSubVersion(); blocks = node.GetStartingHeight(); - // printf("%s: %s!!!\n", cip.ToString().c_str(), ret ? "GOOD" : "BAD"); + // printf("%s: %s!!!\n", cip.ToString().c_str(), ret ? "GOOD" : "BAD"); return ret; } catch (std::ios_base::failure &e) { ban = 0; diff --git a/src/seeder/main.cpp b/src/seeder/main.cpp --- a/src/seeder/main.cpp +++ b/src/seeder/main.cpp @@ -2,6 +2,7 @@ #include "clientversion.h" #include "db.h" #include "dns.h" +#include "logging.h" #include "protocol.h" #include "streams.h" @@ -431,7 +432,7 @@ queries += dnsThread[i]->dbQueries; } printf("%s %i/%i available (%i tried in %is, %i new, %i active), %i " - "banned; %llu DNS requests, %llu db queries", + "banned; %llu DNS requests, %llu db queries\n", c, stats.nGood, stats.nAvail, stats.nTracked, stats.nAge, stats.nNew, stats.nAvail - stats.nTracked - stats.nNew, stats.nBanned, (unsigned long long)requests, @@ -468,6 +469,9 @@ } int main(int argc, char **argv) { + // The logger dump everything on the console by default. + GetLogger().m_print_to_console = true; + signal(SIGPIPE, SIG_IGN); setbuf(stdout, nullptr); CDnsSeedOpts opts;