Merge pull request #2541 from luke-jr/bugfix_wallet_resend

Bugfix: Store last/next wallet resend times unique per CWallet object
This commit is contained in:
Pieter Wuille 2013-07-28 17:21:21 -07:00
commit 4bb77b4963
2 changed files with 8 additions and 7 deletions

View file

@ -892,19 +892,17 @@ void CWallet::ResendWalletTransactions()
{ {
// Do this infrequently and randomly to avoid giving away // Do this infrequently and randomly to avoid giving away
// that these are our transactions. // that these are our transactions.
static int64 nNextTime; if (GetTime() < nNextResend)
if (GetTime() < nNextTime)
return; return;
bool fFirst = (nNextTime == 0); bool fFirst = (nNextResend == 0);
nNextTime = GetTime() + GetRand(30 * 60); nNextResend = GetTime() + GetRand(30 * 60);
if (fFirst) if (fFirst)
return; return;
// Only do it if there's been a new block since last time // Only do it if there's been a new block since last time
static int64 nLastTime; if (nTimeBestReceived < nLastResend)
if (nTimeBestReceived < nLastTime)
return; return;
nLastTime = GetTime(); nLastResend = GetTime();
// Rebroadcast any of our txes that aren't in a block yet // Rebroadcast any of our txes that aren't in a block yet
printf("ResendWalletTransactions()\n"); printf("ResendWalletTransactions()\n");

View file

@ -80,6 +80,9 @@ private:
// the maximum wallet format version: memory-only variable that specifies to what version this wallet may be upgraded // the maximum wallet format version: memory-only variable that specifies to what version this wallet may be upgraded
int nWalletMaxVersion; int nWalletMaxVersion;
int64 nNextResend;
int64 nLastResend;
public: public:
mutable CCriticalSection cs_wallet; mutable CCriticalSection cs_wallet;