mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-30 16:54:19 +00:00
Allow SendMessages to run partially without cs_main
SendMessages() tries to acquire a cs_main lock now, but this isn't nessecary for much of its functionality. Move those parts out of the locked section, so they can always be performed, and we hold cs_main for a shorter time.
This commit is contained in:
parent
38d15d8b42
commit
6055b9101b
34
src/main.cpp
34
src/main.cpp
@ -4134,8 +4134,7 @@ bool ProcessMessages(CNode* pfrom)
|
|||||||
|
|
||||||
bool SendMessages(CNode* pto, bool fSendTrickle)
|
bool SendMessages(CNode* pto, bool fSendTrickle)
|
||||||
{
|
{
|
||||||
TRY_LOCK(cs_main, lockMain);
|
{
|
||||||
if (lockMain) {
|
|
||||||
// Don't send anything until we get their version message
|
// Don't send anything until we get their version message
|
||||||
if (pto->nVersion == 0)
|
if (pto->nVersion == 0)
|
||||||
return true;
|
return true;
|
||||||
@ -4170,20 +4169,6 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start block sync
|
|
||||||
if (pto->fStartSync && !fImporting && !fReindex) {
|
|
||||||
pto->fStartSync = false;
|
|
||||||
PushGetBlocks(pto, chainActive.Tip(), uint256(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Resend wallet transactions that haven't gotten in a block yet
|
|
||||||
// Except during reindex, importing and IBD, when old wallet
|
|
||||||
// transactions become unconfirmed and spams other nodes.
|
|
||||||
if (!fReindex && !fImporting && !IsInitialBlockDownload())
|
|
||||||
{
|
|
||||||
ResendWalletTransactions();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Address refresh broadcast
|
// Address refresh broadcast
|
||||||
static int64 nLastRebroadcast;
|
static int64 nLastRebroadcast;
|
||||||
if (!IsInitialBlockDownload() && (GetTime() - nLastRebroadcast > 24 * 60 * 60))
|
if (!IsInitialBlockDownload() && (GetTime() - nLastRebroadcast > 24 * 60 * 60))
|
||||||
@ -4234,6 +4219,23 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
|
|||||||
pto->PushMessage("addr", vAddr);
|
pto->PushMessage("addr", vAddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TRY_LOCK(cs_main, lockMain);
|
||||||
|
if (!lockMain)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// Start block sync
|
||||||
|
if (pto->fStartSync && !fImporting && !fReindex) {
|
||||||
|
pto->fStartSync = false;
|
||||||
|
PushGetBlocks(pto, chainActive.Tip(), uint256(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Resend wallet transactions that haven't gotten in a block yet
|
||||||
|
// Except during reindex, importing and IBD, when old wallet
|
||||||
|
// transactions become unconfirmed and spams other nodes.
|
||||||
|
if (!fReindex && !fImporting && !IsInitialBlockDownload())
|
||||||
|
{
|
||||||
|
ResendWalletTransactions();
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Message: inventory
|
// Message: inventory
|
||||||
|
Loading…
x
Reference in New Issue
Block a user