Skip to content

Commit c3f34dc

Browse files
ab7ac1b partial bitcoin#25176: Fix frequent -netinfo JSON errors from null getpeerinfo#relaytxes (Kittywhiskers Van Gogh) c89799d merge bitcoin#24692: Follow-ups to bitcoin#21160 (Kittywhiskers Van Gogh) 33098ae merge bitcoin#21160: Move tx inventory into net_processing (Kittywhiskers Van Gogh) 24205d9 partial bitcoin#20196: fix GetListenPort() to derive the proper port (Kittywhiskers Van Gogh) 7f72009 merge bitcoin-core/gui#526: Add address relay/processed/rate-limited fields to peer details (Kittywhiskers Van Gogh) a9114f1 merge bitcoin#23695: Always serialize local timestamp for version msg (Kittywhiskers Van Gogh) d936c28 merge bitcoin#23575: Rework FillNode (Kittywhiskers Van Gogh) 6f8c730 merge bitcoin#19499: Make timeout mockable and type safe, speed up test (Kittywhiskers Van Gogh) 43a82bd merge bitcoin#20769: fixes "advertised address where nobody is listening" (Kittywhiskers Van Gogh) Pull request description: ## Additional Information * Dependent on dashpay#5978 * Dependent on dashpay#5977 ## Breaking Changes None observed. ## Checklist: - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)** - [x] I have added or updated relevant unit/integration/functional/e2e tests - [x] I have made corresponding changes to the documentation **(note: N/A)** - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ ACKs for top commit: PastaPastaPasta: utACK ab7ac1b Tree-SHA512: 87bf5108bb80576c5bff8cd577add7800044da252fd18590e06a727f0bf70de94e2e9294b4412cdd9f1f6676472b0359902af361aaffc4c9ee299ad07d6af009
2 parents b1852e0 + ab7ac1b commit c3f34dc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+542
-327
lines changed

src/bitcoin-cli.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ class NetinfoRequestHandler : public BaseRequestHandler
525525
const int8_t network_id{NetworkStringToId(network)};
526526
if (network_id == UNKNOWN_NETWORK) continue;
527527
const bool is_outbound{!peer["inbound"].get_bool()};
528-
const bool is_block_relay{!peer["relaytxes"].get_bool()};
528+
const bool is_block_relay{peer["relaytxes"].isNull() ? false : !peer["relaytxes"].get_bool()};
529529
++m_counts.at(is_outbound).at(network_id); // in/out by network
530530
++m_counts.at(is_outbound).at(m_networks.size()); // in/out overall
531531
++m_counts.at(2).at(network_id); // total by network

src/governance/governance.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <masternode/meta.h>
1818
#include <masternode/node.h>
1919
#include <masternode/sync.h>
20+
#include <net_processing.h>
2021
#include <netfulfilledman.h>
2122
#include <netmessagemaker.h>
2223
#include <protocol.h>
@@ -141,9 +142,9 @@ PeerMsgRet CGovernanceManager::ProcessMessage(CNode& peer, CConnman& connman, Pe
141142

142143
LogPrint(BCLog::GOBJECT, "MNGOVERNANCESYNC -- syncing governance objects to our peer %s\n", peer.GetLogString());
143144
if (nProp == uint256()) {
144-
return SyncObjects(peer, connman);
145+
return SyncObjects(peer, peerman, connman);
145146
} else {
146-
SyncSingleObjVotes(peer, nProp, filter, connman);
147+
SyncSingleObjVotes(peer, peerman, nProp, filter, connman);
147148
}
148149
}
149150

@@ -858,7 +859,7 @@ bool CGovernanceManager::ConfirmInventoryRequest(const CInv& inv)
858859
return true;
859860
}
860861

861-
void CGovernanceManager::SyncSingleObjVotes(CNode& peer, const uint256& nProp, const CBloomFilter& filter, CConnman& connman)
862+
void CGovernanceManager::SyncSingleObjVotes(CNode& peer, PeerManager& peerman, const uint256& nProp, const CBloomFilter& filter, CConnman& connman)
862863
{
863864
// do not provide any data until our node is synced
864865
if (!Assert(m_mn_sync)->IsSynced()) return;
@@ -899,7 +900,7 @@ void CGovernanceManager::SyncSingleObjVotes(CNode& peer, const uint256& nProp, c
899900
if (filter.contains(nVoteHash) || !vote.IsValid(tip_mn_list, onlyVotingKeyAllowed)) {
900901
continue;
901902
}
902-
peer.PushInventory(CInv(MSG_GOVERNANCE_OBJECT_VOTE, nVoteHash));
903+
peerman.PushInventory(peer.GetId(), CInv(MSG_GOVERNANCE_OBJECT_VOTE, nVoteHash));
903904
++nVoteCount;
904905
}
905906

@@ -908,7 +909,7 @@ void CGovernanceManager::SyncSingleObjVotes(CNode& peer, const uint256& nProp, c
908909
LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- sent %d votes to peer=%d\n", __func__, nVoteCount, peer.GetId());
909910
}
910911

911-
PeerMsgRet CGovernanceManager::SyncObjects(CNode& peer, CConnman& connman) const
912+
PeerMsgRet CGovernanceManager::SyncObjects(CNode& peer, PeerManager& peerman, CConnman& connman) const
912913
{
913914
assert(m_netfulfilledman.IsValid());
914915

@@ -959,7 +960,7 @@ PeerMsgRet CGovernanceManager::SyncObjects(CNode& peer, CConnman& connman) const
959960

960961
// Push the inventory budget proposal message over to the other client
961962
LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- syncing govobj: %s, peer=%d\n", __func__, strHash, peer.GetId());
962-
peer.PushInventory(CInv(MSG_GOVERNANCE_OBJECT, nHash));
963+
peerman.PushInventory(peer.GetId(), CInv(MSG_GOVERNANCE_OBJECT, nHash));
963964
++nObjCount;
964965
}
965966

src/governance/governance.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,8 @@ class CGovernanceManager : public GovernanceStore
292292
*/
293293
bool ConfirmInventoryRequest(const CInv& inv);
294294

295-
void SyncSingleObjVotes(CNode& peer, const uint256& nProp, const CBloomFilter& filter, CConnman& connman);
296-
PeerMsgRet SyncObjects(CNode& peer, CConnman& connman) const;
295+
void SyncSingleObjVotes(CNode& peer, PeerManager& peerman, const uint256& nProp, const CBloomFilter& filter, CConnman& connman);
296+
PeerMsgRet SyncObjects(CNode& peer, PeerManager& peerman, CConnman& connman) const;
297297

298298
PeerMsgRet ProcessMessage(CNode& peer, CConnman& connman, PeerManager& peerman, std::string_view msg_type, CDataStream& vRecv);
299299

src/init.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1256,6 +1256,11 @@ bool AppInitParameterInteraction(const ArgsManager& args)
12561256
return InitError(Untranslated("Cannot set -bind or -whitebind together with -listen=0"));
12571257
}
12581258

1259+
// if listen=0, then disallow listenonion=1
1260+
if (!args.GetBoolArg("-listen", DEFAULT_LISTEN) && args.GetBoolArg("-listenonion", DEFAULT_LISTEN_ONION)) {
1261+
return InitError(Untranslated("Cannot set -listen=0 together with -listenonion=1"));
1262+
}
1263+
12591264
// Make sure enough file descriptors are available
12601265
int nBind = std::max(nUserBind, size_t(1));
12611266
nUserMaxConnections = args.GetArg("-maxconnections", DEFAULT_MAX_PEER_CONNECTIONS);

src/llmq/context.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ LLMQContext::LLMQContext(CChainState& chainstate, CConnman& connman, CDeterminis
2929
llmq::quorumBlockProcessor = std::make_unique<llmq::CQuorumBlockProcessor>(chainstate, dmnman, evo_db, peerman);
3030
return llmq::quorumBlockProcessor.get();
3131
}()},
32-
qdkgsman{std::make_unique<llmq::CDKGSessionManager>(*bls_worker, chainstate, connman, dmnman, *dkg_debugman, mn_metaman, *quorum_block_processor, mn_activeman, sporkman, unit_tests, wipe)},
32+
qdkgsman{std::make_unique<llmq::CDKGSessionManager>(*bls_worker, chainstate, connman, dmnman, *dkg_debugman, mn_metaman, *quorum_block_processor, mn_activeman, sporkman, peerman, unit_tests, wipe)},
3333
qman{[&]() -> llmq::CQuorumManager* const {
3434
assert(llmq::quorumManager == nullptr);
3535
llmq::quorumManager = std::make_unique<llmq::CQuorumManager>(*bls_worker, chainstate, connman, dmnman, *qdkgsman, evo_db, *quorum_block_processor, mn_activeman, mn_sync, sporkman);
3636
return llmq::quorumManager.get();
3737
}()},
38-
sigman{std::make_unique<llmq::CSigningManager>(connman, mn_activeman, *llmq::quorumManager, unit_tests, wipe)},
38+
sigman{std::make_unique<llmq::CSigningManager>(connman, mn_activeman, *llmq::quorumManager, peerman, unit_tests, wipe)},
3939
shareman{std::make_unique<llmq::CSigSharesManager>(connman, *sigman, mn_activeman, *llmq::quorumManager, sporkman, peerman)},
4040
clhandler{[&]() -> llmq::CChainLocksHandler* const {
4141
assert(llmq::chainLocksHandler == nullptr);

src/llmq/dkgsession.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <logging.h>
2121
#include <masternode/meta.h>
2222
#include <masternode/node.h>
23+
#include <net_processing.h>
2324
#include <netmessagemaker.h>
2425
#include <validation.h>
2526
#include <util/irange.h>
@@ -1326,10 +1327,10 @@ void CDKGSession::RelayInvToParticipants(const CInv& inv) const
13261327
myProTxHash.ToString().substr(0, 4), ss.str());
13271328

13281329
std::stringstream ss2;
1329-
connman.ForEachNode([&](CNode* pnode) {
1330+
connman.ForEachNode([&](const CNode* pnode) {
13301331
if (pnode->qwatch ||
13311332
(!pnode->GetVerifiedProRegTxHash().IsNull() && (relayMembers.count(pnode->GetVerifiedProRegTxHash()) != 0))) {
1332-
pnode->PushInventory(inv);
1333+
Assert(m_peerman)->PushInventory(pnode->GetId(), inv);
13331334
}
13341335

13351336
if (pnode->GetVerifiedProRegTxHash().IsNull()) {

src/llmq/dkgsession.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class CDeterministicMN;
2222
class CMasternodeMetaMan;
2323
class CSporkManager;
2424
class UniValue;
25+
class PeerManager;
2526

2627
using CDeterministicMNCPtr = std::shared_ptr<const CDeterministicMN>;
2728

@@ -280,6 +281,7 @@ class CDKGSession
280281
CMasternodeMetaMan& m_mn_metaman;
281282
const CActiveMasternodeManager* const m_mn_activeman;
282283
const CSporkManager& m_sporkman;
284+
const std::unique_ptr<PeerManager>& m_peerman;
283285

284286
const CBlockIndex* m_quorum_base_block_index{nullptr};
285287
int quorumIndex{0};
@@ -322,9 +324,10 @@ class CDKGSession
322324
CDKGSession(const Consensus::LLMQParams& _params, CBLSWorker& _blsWorker, CConnman& _connman,
323325
CDeterministicMNManager& dmnman, CDKGSessionManager& _dkgManager, CDKGDebugManager& _dkgDebugManager,
324326
CMasternodeMetaMan& mn_metaman, const CActiveMasternodeManager* const mn_activeman,
325-
const CSporkManager& sporkman) :
327+
const CSporkManager& sporkman, const std::unique_ptr<PeerManager>& peerman) :
326328
params(_params), blsWorker(_blsWorker), cache(_blsWorker), connman(_connman), m_dmnman(dmnman), dkgManager(_dkgManager),
327-
dkgDebugManager(_dkgDebugManager), m_mn_metaman(mn_metaman), m_mn_activeman(mn_activeman), m_sporkman(sporkman) {}
329+
dkgDebugManager(_dkgDebugManager), m_mn_metaman(mn_metaman), m_mn_activeman(mn_activeman), m_sporkman(sporkman),
330+
m_peerman(peerman) {}
328331

329332
bool Init(gsl::not_null<const CBlockIndex*> pQuorumBaseBlockIndex, Span<CDeterministicMNCPtr> mns, const uint256& _myProTxHash, int _quorumIndex);
330333

src/llmq/dkgsessionhandler.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ namespace llmq
2727
CDKGSessionHandler::CDKGSessionHandler(CBLSWorker& _blsWorker, CChainState& chainstate, CConnman& _connman, CDeterministicMNManager& dmnman,
2828
CDKGDebugManager& _dkgDebugManager, CDKGSessionManager& _dkgManager, CMasternodeMetaMan& mn_metaman,
2929
CQuorumBlockProcessor& _quorumBlockProcessor, const CActiveMasternodeManager* const mn_activeman,
30-
const CSporkManager& sporkman, const Consensus::LLMQParams& _params, int _quorumIndex) :
30+
const CSporkManager& sporkman, const std::unique_ptr<PeerManager>& peerman, const Consensus::LLMQParams& _params, int _quorumIndex) :
3131
blsWorker(_blsWorker),
3232
m_chainstate(chainstate),
3333
connman(_connman),
@@ -38,9 +38,10 @@ CDKGSessionHandler::CDKGSessionHandler(CBLSWorker& _blsWorker, CChainState& chai
3838
quorumBlockProcessor(_quorumBlockProcessor),
3939
m_mn_activeman(mn_activeman),
4040
m_sporkman(sporkman),
41+
m_peerman(peerman),
4142
params(_params),
4243
quorumIndex(_quorumIndex),
43-
curSession(std::make_unique<CDKGSession>(_params, _blsWorker, _connman, dmnman, _dkgManager, _dkgDebugManager, m_mn_metaman, m_mn_activeman, sporkman)),
44+
curSession(std::make_unique<CDKGSession>(_params, _blsWorker, _connman, dmnman, _dkgManager, _dkgDebugManager, m_mn_metaman, m_mn_activeman, sporkman, peerman)),
4445
pendingContributions((size_t)_params.size * 2, MSG_QUORUM_CONTRIB), // we allow size*2 messages as we need to make sure we see bad behavior (double messages)
4546
pendingComplaints((size_t)_params.size * 2, MSG_QUORUM_COMPLAINT),
4647
pendingJustifications((size_t)_params.size * 2, MSG_QUORUM_JUSTIFICATION),
@@ -188,7 +189,7 @@ void CDKGSessionHandler::StopThread()
188189

189190
bool CDKGSessionHandler::InitNewQuorum(const CBlockIndex* pQuorumBaseBlockIndex)
190191
{
191-
curSession = std::make_unique<CDKGSession>(params, blsWorker, connman, m_dmnman, dkgManager, dkgDebugManager, m_mn_metaman, m_mn_activeman, m_sporkman);
192+
curSession = std::make_unique<CDKGSession>(params, blsWorker, connman, m_dmnman, dkgManager, dkgDebugManager, m_mn_metaman, m_mn_activeman, m_sporkman, m_peerman);
192193

193194
if (!DeploymentDIP0003Enforced(pQuorumBaseBlockIndex->nHeight, Params().GetConsensus())) {
194195
return false;

src/llmq/dkgsessionhandler.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ class CDKGSessionHandler
130130
CQuorumBlockProcessor& quorumBlockProcessor;
131131
const CActiveMasternodeManager* const m_mn_activeman;
132132
const CSporkManager& m_sporkman;
133+
const std::unique_ptr<PeerManager>& m_peerman;
133134
const Consensus::LLMQParams params;
134135
const int quorumIndex;
135136

@@ -151,7 +152,7 @@ class CDKGSessionHandler
151152
CDKGSessionHandler(CBLSWorker& _blsWorker, CChainState& chainstate, CConnman& _connman, CDeterministicMNManager& dmnman,
152153
CDKGDebugManager& _dkgDebugManager, CDKGSessionManager& _dkgManager, CMasternodeMetaMan& mn_metaman,
153154
CQuorumBlockProcessor& _quorumBlockProcessor, const CActiveMasternodeManager* const mn_activeman,
154-
const CSporkManager& sporkman, const Consensus::LLMQParams& _params, int _quorumIndex);
155+
const CSporkManager& sporkman, const std::unique_ptr<PeerManager>& peerman, const Consensus::LLMQParams& _params, int _quorumIndex);
155156
~CDKGSessionHandler() = default;
156157

157158
void UpdatedBlockTip(const CBlockIndex *pindexNew);

src/llmq/dkgsessionmgr.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ static const std::string DB_ENC_CONTRIB = "qdkg_E";
2626

2727
CDKGSessionManager::CDKGSessionManager(CBLSWorker& _blsWorker, CChainState& chainstate, CConnman& _connman, CDeterministicMNManager& dmnman,
2828
CDKGDebugManager& _dkgDebugManager, CMasternodeMetaMan& mn_metaman, CQuorumBlockProcessor& _quorumBlockProcessor,
29-
const CActiveMasternodeManager* const mn_activeman, const CSporkManager& sporkman, bool unitTests, bool fWipe) :
29+
const CActiveMasternodeManager* const mn_activeman, const CSporkManager& sporkman,
30+
const std::unique_ptr<PeerManager>& peerman, bool unitTests, bool fWipe) :
3031
db(std::make_unique<CDBWrapper>(unitTests ? "" : (GetDataDir() / "llmq/dkgdb"), 1 << 20, unitTests, fWipe)),
3132
blsWorker(_blsWorker),
3233
m_chainstate(chainstate),
@@ -49,7 +50,8 @@ CDKGSessionManager::CDKGSessionManager(CBLSWorker& _blsWorker, CChainState& chai
4950
for (const auto i : irange::range(session_count)) {
5051
dkgSessionHandlers.emplace(std::piecewise_construct,
5152
std::forward_as_tuple(params.type, i),
52-
std::forward_as_tuple(blsWorker, m_chainstate, connman, dmnman, dkgDebugManager, *this, mn_metaman, quorumBlockProcessor, mn_activeman, spork_manager, params, i));
53+
std::forward_as_tuple(blsWorker, m_chainstate, connman, dmnman, dkgDebugManager, *this, mn_metaman,
54+
quorumBlockProcessor, mn_activeman, spork_manager, peerman, params, i));
5355
}
5456
}
5557
}

0 commit comments

Comments
 (0)