Changeset View
Changeset View
Standalone View
Standalone View
src/seeder/bitcoin.cpp
Show First 20 Lines • Show All 375 Lines • ▼ Show 20 Lines | bool CSeederNode::Run() { | ||||
if (sock == INVALID_SOCKET) { | if (sock == INVALID_SOCKET) { | ||||
res = false; | res = false; | ||||
} | } | ||||
close(sock); | close(sock); | ||||
sock = INVALID_SOCKET; | sock = INVALID_SOCKET; | ||||
return (ban == 0) && res; | return (ban == 0) && res; | ||||
} | } | ||||
bool TestNode(const CService &cip, int &ban, int &clientV, | void TestNode(CServiceResult &nodeRecord, std::vector<CAddress> *vAddr) { | ||||
std::string &clientSV, int &blocks, | |||||
std::vector<CAddress> *vAddr) { | |||||
try { | try { | ||||
CSeederNode node(cip, vAddr); | CSeederNode node(nodeRecord.service, vAddr); | ||||
bool ret = node.Run(); | bool ret = node.Run(); | ||||
if (!ret) { | if (!ret) { | ||||
ban = node.GetBan(); | nodeRecord.nBanTime = node.GetBan(); | ||||
} else { | } else { | ||||
ban = 0; | nodeRecord.nBanTime = 0; | ||||
} | } | ||||
clientV = node.GetClientVersion(); | nodeRecord.nClientV = node.GetClientVersion(); | ||||
clientSV = node.GetClientSubVersion(); | nodeRecord.strClientV = node.GetClientSubVersion(); | ||||
blocks = node.GetStartingHeight(); | nodeRecord.nHeight = node.GetStartingHeight(); | ||||
// fprintf(stdout, "%s: %s!!!\n", cip.ToString().c_str(), ret ? "GOOD" : | // fprintf(stdout, "%s: %s!!!\n", cip.ToString().c_str(), ret ? "GOOD" : | ||||
// "BAD"); | // "BAD"); | ||||
return ret; | nodeRecord.fGood = ret; | ||||
if (!nodeRecord.fGood && !nodeRecord.fReliable) { | |||||
nodeRecord.nBanTime = 100000; | |||||
} | |||||
} catch (std::ios_base::failure &e) { | } catch (std::ios_base::failure &e) { | ||||
ban = 0; | nodeRecord.nBanTime = 0; | ||||
return false; | nodeRecord.fGood = false; | ||||
} | } | ||||
} | } |