Changeset View
Changeset View
Standalone View
Standalone View
src/seeder/bitcoin.cpp
Show First 20 Lines • Show All 274 Lines • ▼ Show 20 Lines | bool CSeederNode::Run() { | ||||
Send(); | Send(); | ||||
bool res = true; | bool res = true; | ||||
int64_t now; | int64_t now; | ||||
while (now = time(nullptr), ban == 0 && | while (now = time(nullptr), ban == 0 && | ||||
(doneAfter == 0 || doneAfter > now) && | (doneAfter == 0 || doneAfter > now) && | ||||
sock != INVALID_SOCKET) { | sock != INVALID_SOCKET) { | ||||
char pchBuf[0x10000]; | char pchBuf[0x10000]; | ||||
fd_set set; | fd_set fdsetRecv; | ||||
FD_ZERO(&set); | fd_set fdsetError; | ||||
FD_SET(sock, &set); | FD_ZERO(&fdsetRecv); | ||||
FD_ZERO(&fdsetError); | |||||
FD_SET(sock, &fdsetRecv); | |||||
FD_SET(sock, &fdsetError); | |||||
struct timeval wa; | struct timeval wa; | ||||
if (doneAfter) { | if (doneAfter) { | ||||
wa.tv_sec = doneAfter - now; | wa.tv_sec = doneAfter - now; | ||||
wa.tv_usec = 0; | wa.tv_usec = 0; | ||||
} else { | } else { | ||||
wa.tv_sec = GetTimeout(); | wa.tv_sec = GetTimeout(); | ||||
wa.tv_usec = 0; | wa.tv_usec = 0; | ||||
} | } | ||||
int ret = select(sock + 1, &set, nullptr, &set, &wa); | int ret = select(sock + 1, &fdsetRecv, nullptr, &fdsetError, &wa); | ||||
if (ret != 1) { | if (ret != 1) { | ||||
if (!doneAfter) res = false; | if (!doneAfter) res = false; | ||||
break; | break; | ||||
} | } | ||||
int nBytes = recv(sock, pchBuf, sizeof(pchBuf), 0); | int nBytes = recv(sock, pchBuf, sizeof(pchBuf), 0); | ||||
int nPos = vRecv.size(); | int nPos = vRecv.size(); | ||||
if (nBytes > 0) { | if (nBytes > 0) { | ||||
vRecv.resize(nPos + nBytes); | vRecv.resize(nPos + nBytes); | ||||
▲ Show 20 Lines • Show All 43 Lines • Show Last 20 Lines |