Changeset View
Changeset View
Standalone View
Standalone View
src/seeder/bitcoin.cpp
Show First 20 Lines • Show All 83 Lines • ▼ Show 20 Lines | void Send() { | ||||
sock = INVALID_SOCKET; | sock = INVALID_SOCKET; | ||||
} | } | ||||
} | } | ||||
void PushVersion() { | void PushVersion() { | ||||
int64_t nTime = time(nullptr); | int64_t nTime = time(nullptr); | ||||
uint64_t nLocalNonce = BITCOIN_SEED_NONCE; | uint64_t nLocalNonce = BITCOIN_SEED_NONCE; | ||||
int64_t nLocalServices = 0; | int64_t nLocalServices = 0; | ||||
CAddress me(CService("0.0.0.0")); | CAddress me(CSeederService("0.0.0.0")); | ||||
BeginMessage("version"); | BeginMessage("version"); | ||||
int nBestHeight = GetRequireHeight(); | int nBestHeight = GetRequireHeight(); | ||||
std::string ver = "/bitcoin-cash-seeder:0.15/"; | std::string ver = "/bitcoin-cash-seeder:0.15/"; | ||||
vSend << PROTOCOL_VERSION << nLocalServices << nTime << you << me | vSend << PROTOCOL_VERSION << nLocalServices << nTime << you << me | ||||
<< nLocalNonce << ver << nBestHeight; | << nLocalNonce << ver << nBestHeight; | ||||
EndMessage(); | EndMessage(); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 125 Lines • ▼ Show 20 Lines | bool ProcessMessages() { | ||||
if (ProcessMessage(strCommand, vMsg)) return true; | if (ProcessMessage(strCommand, vMsg)) return true; | ||||
// printf("%s: done processing %s\n", ToString(you).c_str(), | // printf("%s: done processing %s\n", ToString(you).c_str(), | ||||
// strCommand.c_str()); | // strCommand.c_str()); | ||||
} while (1); | } while (1); | ||||
return false; | return false; | ||||
} | } | ||||
public: | public: | ||||
CNode(const CService &ip, std::vector<CAddress> *vAddrIn) | CNode(const CSeederService &ip, std::vector<CAddress> *vAddrIn) | ||||
: vSend(SER_NETWORK, 0), vRecv(SER_NETWORK, 0), nHeaderStart(-1), | : vSend(SER_NETWORK, 0), vRecv(SER_NETWORK, 0), nHeaderStart(-1), | ||||
nMessageStart(-1), nVersion(0), vAddr(vAddrIn), ban(0), doneAfter(0), | nMessageStart(-1), nVersion(0), vAddr(vAddrIn), ban(0), doneAfter(0), | ||||
you(ip) { | you(ip) { | ||||
if (time(nullptr) > 1329696000) { | if (time(nullptr) > 1329696000) { | ||||
vSend.SetVersion(209); | vSend.SetVersion(209); | ||||
vRecv.SetVersion(209); | vRecv.SetVersion(209); | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | public: | ||||
int GetClientVersion() { return nVersion; } | int GetClientVersion() { return nVersion; } | ||||
std::string GetClientSubVersion() { return strSubVer; } | std::string GetClientSubVersion() { return strSubVer; } | ||||
int GetStartingHeight() { return nStartingHeight; } | int GetStartingHeight() { return nStartingHeight; } | ||||
}; | }; | ||||
bool TestNode(const CService &cip, int &ban, int &clientV, | bool TestNode(const CSeederService &cip, int &ban, int &clientV, | ||||
std::string &clientSV, int &blocks, | std::string &clientSV, int &blocks, | ||||
std::vector<CAddress> *vAddr) { | std::vector<CAddress> *vAddr) { | ||||
try { | try { | ||||
CNode node(cip, vAddr); | CNode node(cip, vAddr); | ||||
bool ret = node.Run(); | bool ret = node.Run(); | ||||
if (!ret) { | if (!ret) { | ||||
ban = node.GetBan(); | ban = node.GetBan(); | ||||
} else { | } else { | ||||
ban = 0; | ban = 0; | ||||
} | } | ||||
clientV = node.GetClientVersion(); | clientV = node.GetClientVersion(); | ||||
clientSV = node.GetClientSubVersion(); | clientSV = node.GetClientSubVersion(); | ||||
blocks = node.GetStartingHeight(); | 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; | return ret; | ||||
} catch (std::ios_base::failure &e) { | } catch (std::ios_base::failure &e) { | ||||
ban = 0; | ban = 0; | ||||
return false; | return false; | ||||
} | } | ||||
} | } | ||||
/* | /* | ||||
int main(void) { | int main(void) { | ||||
CService ip("bitcoin.sipa.be", 8333, true); | CSeederService ip("bitcoin.sipa.be", 8333, true); | ||||
std::vector<CAddress> vAddr; | std::vector<CAddress> vAddr; | ||||
vAddr.clear(); | vAddr.clear(); | ||||
int ban = 0; | int ban = 0; | ||||
bool ret = TestNode(ip, ban, vAddr); | bool ret = TestNode(ip, ban, vAddr); | ||||
printf("ret=%s ban=%i vAddr.size()=%i\n", ret ? "good" : "bad", ban, | printf("ret=%s ban=%i vAddr.size()=%i\n", ret ? "good" : "bad", ban, | ||||
(int)vAddr.size()); | (int)vAddr.size()); | ||||
} | } | ||||
*/ | */ |