Skip to content

Commit 25a07f1

Browse files
author
Evan Duffield
committed
reduced spam / better filter for asking for masternodes
1 parent de54664 commit 25a07f1

File tree

4 files changed

+21
-13
lines changed

4 files changed

+21
-13
lines changed

src/clientversion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
#define CLIENT_VERSION_MAJOR 0
1010
#define CLIENT_VERSION_MINOR 10
1111
#define CLIENT_VERSION_REVISION 17
12-
#define CLIENT_VERSION_BUILD 19
12+
#define CLIENT_VERSION_BUILD 20
1313

1414
// Set to true for release, false for prerelease or test build
1515
#define CLIENT_VERSION_IS_RELEASE true

src/darksend.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2136,7 +2136,7 @@ void ThreadCheckDarkSendPool()
21362136
LOCK(cs_vNodes);
21372137
BOOST_FOREACH(CNode* pnode, vNodes)
21382138
{
2139-
if (true){ //pnode->nVersion >= darkSendPool.MIN_PEER_PROTO_VERSION) {
2139+
if (pnode->nVersion >= darkSendPool.MIN_PEER_PROTO_VERSION) {
21402140

21412141
//keep track of who we've asked for the list
21422142
if(pnode->HasFulfilledRequest("mnsync")) continue;
@@ -2164,9 +2164,6 @@ void ThreadCheckDarkSendPool()
21642164

21652165
}
21662166

2167-
//clear this every 3 hours
2168-
if(c % 60*60*3 == 0) vecMasternodeAskedFor.clear();
2169-
21702167
//auto denom every 2.5 minutes (liquidity provides try less often)
21712168
if(c % 60*(nLiquidityProvider+1) == 0){
21722169
if(nLiquidityProvider!=0){

src/makefile.unix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ ifdef UNIT_TEST
2323
DEFS+=-DUNIT_TEST=1
2424
endif
2525

26+
STATIC = 1
2627
LMODE = dynamic
2728
LMODE2 = dynamic
2829
ifdef STATIC

src/masternode.cpp

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
std::vector<CMasterNode> darkSendMasterNodes;
1111
/** Object for who's going to get paid on which blocks */
1212
CMasternodePayments masternodePayments;
13-
/** Which masternodes we're asked other clients for */
14-
std::vector<CTxIn> vecMasternodeAskedFor;
1513
// keep track of masternode votes I've seen
1614
map<uint256, int> mapSeenMasternodeVotes;
1715
// keep track of the scanning errors I've seen
1816
map<uint256, int> mapSeenMasternodeScanningErrors;
1917
// who's asked for the masternode list and the last time
2018
std::map<CNetAddr, int64> askedForMasternodeList;
19+
// which masternodes we've asked for
20+
std::map<COutPoint, int64> askedForMasternodeListEntry;
2121

2222
// manage the masternode connections
2323
void ProcessMasternodeConnections(){
@@ -226,15 +226,21 @@ void ProcessMessageMasternode(CNode* pfrom, std::string& strCommand, CDataStream
226226

227227
// ask for the dsee info once from the node that sent dseep
228228

229-
LogPrintf("dseep - Couldn't find masternode entry %s\n", vin.ToString().c_str());
229+
if(fDebug) LogPrintf("dseep - Couldn't find masternode entry %s\n", vin.ToString().c_str());
230230

231-
BOOST_FOREACH(CTxIn vinAsked, vecMasternodeAskedFor)
232-
if (vinAsked == vin) return;
231+
std::map<COutPoint, int64>::iterator i = askedForMasternodeListEntry.find(vin.prevout);
232+
if (i != askedForMasternodeListEntry.end()){
233+
int64 t = (*i).second;
234+
if (GetTime() < t) {
235+
return;
236+
}
237+
}
233238

234-
LogPrintf("dseep - Asking source node for missing entry %s\n", vin.ToString().c_str());
235239

236-
vecMasternodeAskedFor.push_back(vin);
240+
LogPrintf("dseep - Asking source node for missing entry %s\n", vin.ToString().c_str());
237241
pfrom->PushMessage("dseg", vin);
242+
int64 askAgain = GetTime()+(60*60*24);
243+
askedForMasternodeListEntry[vin.prevout] = askAgain;
238244

239245
} else if (strCommand == "dseg") { //Get masternode list or specific entry
240246
CTxIn vin;
@@ -276,12 +282,15 @@ void ProcessMessageMasternode(CNode* pfrom, std::string& strCommand, CDataStream
276282
pfrom->PushMessage("dsee", mn.vin, mn.addr, mn.sig, mn.now, mn.pubkey, mn.pubkey2, count, i, mn.lastTimeSeen, mn.protocolVersion);
277283
}
278284
} else if (vin == mn.vin) {
279-
LogPrintf("dseg - Sending masternode entry - %s \n", mn.addr.ToString().c_str());
285+
if(fDebug) LogPrintf("dseg - Sending masternode entry - %s \n", mn.addr.ToString().c_str());
280286
pfrom->PushMessage("dsee", mn.vin, mn.addr, mn.sig, mn.now, mn.pubkey, mn.pubkey2, count, i, mn.lastTimeSeen, mn.protocolVersion);
287+
LogPrintf("dseg - Sent 1 masternode entries to %s\n", pfrom->addr.ToString().c_str());
281288
return;
282289
}
283290
i++;
284291
}
292+
293+
LogPrintf("dseg - Sent %d masternode entries to %s\n", count, pfrom->addr.ToString().c_str());
285294
}
286295

287296
else if (strCommand == "mnget") { //Masternode Payments Request Sync
@@ -294,6 +303,7 @@ void ProcessMessageMasternode(CNode* pfrom, std::string& strCommand, CDataStream
294303

295304
pfrom->FulfilledRequest("mnget");
296305
masternodePayments.Sync(pfrom);
306+
LogPrintf("mnget - Sent masternode winners to %s\n", pfrom->addr.ToString().c_str());
297307
}
298308
else if (strCommand == "mnw") { //Masternode Payments Declare Winner
299309
CMasternodePaymentWinner winner;

0 commit comments

Comments
 (0)