mirror of
https://github.com/dashpay/dash.git
synced 2024-12-27 21:12:48 +01:00
Fix bug that prevented new blocks to update tip during mixing
Closes #706
This commit is contained in:
parent
97bcec4853
commit
5c2a0cc9ec
@ -69,8 +69,6 @@ void CActiveMasternode::ManageStatus()
|
|||||||
service = CService(strMasterNodeAddr);
|
service = CService(strMasterNodeAddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
LogPrintf("CActiveMasternode::ManageStatus() - Checking inbound connection to '%s'\n", service.ToString());
|
|
||||||
|
|
||||||
int mainnetDefaultPort = Params(CBaseChainParams::MAIN).GetDefaultPort();
|
int mainnetDefaultPort = Params(CBaseChainParams::MAIN).GetDefaultPort();
|
||||||
if(Params().NetworkIDString() == CBaseChainParams::MAIN) {
|
if(Params().NetworkIDString() == CBaseChainParams::MAIN) {
|
||||||
if(service.GetPort() != mainnetDefaultPort) {
|
if(service.GetPort() != mainnetDefaultPort) {
|
||||||
@ -84,11 +82,15 @@ void CActiveMasternode::ManageStatus()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!ConnectNode((CAddress)service, NULL, true)){
|
LogPrintf("CActiveMasternode::ManageStatus() - Checking inbound connection to '%s'\n", service.ToString());
|
||||||
|
|
||||||
|
CNode *pnode = ConnectNode((CAddress)service, NULL, false);
|
||||||
|
if(!pnode){
|
||||||
notCapableReason = "Could not connect to " + service.ToString();
|
notCapableReason = "Could not connect to " + service.ToString();
|
||||||
LogPrintf("CActiveMasternode::ManageStatus() - not capable: %s\n", notCapableReason);
|
LogPrintf("CActiveMasternode::ManageStatus() - not capable: %s\n", notCapableReason);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
pnode->Release();
|
||||||
|
|
||||||
// Choose coins to use
|
// Choose coins to use
|
||||||
CPubKey pubKeyCollateralAddress;
|
CPubKey pubKeyCollateralAddress;
|
||||||
|
@ -105,10 +105,11 @@ void CDarkSendRelay::RelayThroughNode(int nRank)
|
|||||||
|
|
||||||
if(pmn != NULL){
|
if(pmn != NULL){
|
||||||
//printf("RelayThroughNode %s\n", pmn->addr.ToString().c_str());
|
//printf("RelayThroughNode %s\n", pmn->addr.ToString().c_str());
|
||||||
CNode* pnode = ConnectNode((CAddress)pmn->addr, NULL, true);
|
CNode* pnode = ConnectNode((CAddress)pmn->addr, NULL, false);
|
||||||
if(pnode){
|
if(pnode){
|
||||||
//printf("Connected\n");
|
//printf("Connected\n");
|
||||||
pnode->PushMessage("dsr", (*this));
|
pnode->PushMessage("dsr", (*this));
|
||||||
|
pnode->Release();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -1544,20 +1544,23 @@ bool CDarksendPool::DoAutomaticDenominating(bool fDryRun)
|
|||||||
std::vector<COutput> vTempCoins2;
|
std::vector<COutput> vTempCoins2;
|
||||||
// Try to match their denominations if possible
|
// Try to match their denominations if possible
|
||||||
if (!pwalletMain->SelectCoinsByDenominations(dsq.nDenom, nValueMin, nBalanceNeedsAnonymized, vTempCoins, vTempCoins2, nValueIn, 0, nDarksendRounds)){
|
if (!pwalletMain->SelectCoinsByDenominations(dsq.nDenom, nValueMin, nBalanceNeedsAnonymized, vTempCoins, vTempCoins2, nValueIn, 0, nDarksendRounds)){
|
||||||
LogPrintf("DoAutomaticDenominating - Couldn't match denominations %d\n", dsq.nDenom);
|
LogPrintf("DoAutomaticDenominating --- Couldn't match denominations %d\n", dsq.nDenom);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CMasternode* pmn = mnodeman.Find(dsq.vin);
|
||||||
|
if(pmn == NULL)
|
||||||
|
{
|
||||||
|
LogPrintf("DoAutomaticDenominating --- dsq vin %s is not in masternode list!", dsq.vin.ToString());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
LogPrintf("DoAutomaticDenominating --- attempt to connect to masternode from queue %s\n", pmn->addr.ToString());
|
||||||
|
lastTimeChanged = GetTimeMillis();
|
||||||
// connect to Masternode and submit the queue request
|
// connect to Masternode and submit the queue request
|
||||||
CNode* pnode = ConnectNode((CAddress)addr, NULL, true);
|
CNode* pnode = ConnectNode((CAddress)addr, NULL, true);
|
||||||
if(pnode != NULL)
|
if(pnode != NULL)
|
||||||
{
|
{
|
||||||
CMasternode* pmn = mnodeman.Find(dsq.vin);
|
|
||||||
if(pmn == NULL)
|
|
||||||
{
|
|
||||||
LogPrintf("DoAutomaticDenominating --- dsq vin %s is not in masternode list!", dsq.vin.ToString());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
pSubmittedToMasternode = pmn;
|
pSubmittedToMasternode = pmn;
|
||||||
vecMasternodesUsed.push_back(dsq.vin);
|
vecMasternodesUsed.push_back(dsq.vin);
|
||||||
sessionDenom = dsq.nDenom;
|
sessionDenom = dsq.nDenom;
|
||||||
@ -1599,7 +1602,7 @@ bool CDarksendPool::DoAutomaticDenominating(bool fDryRun)
|
|||||||
}
|
}
|
||||||
|
|
||||||
lastTimeChanged = GetTimeMillis();
|
lastTimeChanged = GetTimeMillis();
|
||||||
LogPrintf("DoAutomaticDenominating -- attempt %d connection to Masternode %s\n", i, pmn->addr.ToString());
|
LogPrintf("DoAutomaticDenominating --- attempt %d connection to Masternode %s\n", i, pmn->addr.ToString());
|
||||||
CNode* pnode = ConnectNode((CAddress)pmn->addr, NULL, true);
|
CNode* pnode = ConnectNode((CAddress)pmn->addr, NULL, true);
|
||||||
if(pnode != NULL){
|
if(pnode != NULL){
|
||||||
pSubmittedToMasternode = pmn;
|
pSubmittedToMasternode = pmn;
|
||||||
|
@ -669,7 +669,8 @@ void CMasternodeMan::ProcessMasternodeConnections()
|
|||||||
if(pnode->fDarkSendMaster){
|
if(pnode->fDarkSendMaster){
|
||||||
if(darkSendPool.pSubmittedToMasternode != NULL && pnode->addr == darkSendPool.pSubmittedToMasternode->addr) continue;
|
if(darkSendPool.pSubmittedToMasternode != NULL && pnode->addr == darkSendPool.pSubmittedToMasternode->addr) continue;
|
||||||
LogPrintf("Closing Masternode connection %s \n", pnode->addr.ToString());
|
LogPrintf("Closing Masternode connection %s \n", pnode->addr.ToString());
|
||||||
pnode->fDisconnect = true;
|
pnode->fDarkSendMaster = false;
|
||||||
|
pnode->Release();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -355,6 +355,11 @@ public:
|
|||||||
// b) the peer may tell us in its version message that we should not relay tx invs
|
// b) the peer may tell us in its version message that we should not relay tx invs
|
||||||
// unless it loads a bloom filter.
|
// unless it loads a bloom filter.
|
||||||
bool fRelayTxes;
|
bool fRelayTxes;
|
||||||
|
// Should be 'true' only if we connected to this node to actually mix funds.
|
||||||
|
// In this case node will be released automatically via CMasternodeMan::ProcessMasternodeConnections().
|
||||||
|
// Connecting to verify connectability/status or connecting for sending/relaying single message
|
||||||
|
// (even if it's relative to mixing e.g. for blinding) should NOT set this to 'true'.
|
||||||
|
// For such cases node should be released manually (preferably right after corresponding code).
|
||||||
bool fDarkSendMaster;
|
bool fDarkSendMaster;
|
||||||
CSemaphoreGrant grantOutbound;
|
CSemaphoreGrant grantOutbound;
|
||||||
CCriticalSection cs_filter;
|
CCriticalSection cs_filter;
|
||||||
|
@ -137,7 +137,9 @@ UniValue masternode(const UniValue& params, bool fHelp)
|
|||||||
|
|
||||||
CService addr = CService(strAddress);
|
CService addr = CService(strAddress);
|
||||||
|
|
||||||
if(ConnectNode((CAddress)addr, NULL, true)){
|
CNode *pnode = ConnectNode((CAddress)addr, NULL, false);
|
||||||
|
if(pnode){
|
||||||
|
pnode->Release();
|
||||||
return "successfully connected";
|
return "successfully connected";
|
||||||
} else {
|
} else {
|
||||||
throw runtime_error("error connecting\n");
|
throw runtime_error("error connecting\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user