1010std::vector<CMasterNode> darkSendMasterNodes;
1111/* * Object for who's going to get paid on which blocks */
1212CMasternodePayments masternodePayments;
13- /* * Which masternodes we're asked other clients for */
14- std::vector<CTxIn> vecMasternodeAskedFor;
1513// keep track of masternode votes I've seen
1614map<uint256, int > mapSeenMasternodeVotes;
1715// keep track of the scanning errors I've seen
1816map<uint256, int > mapSeenMasternodeScanningErrors;
1917// who's asked for the masternode list and the last time
2018std::map<CNetAddr, int64> askedForMasternodeList;
19+ // which masternodes we've asked for
20+ std::map<COutPoint, int64> askedForMasternodeListEntry;
2121
2222// manage the masternode connections
2323void 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