Skip to content

Commit aac519f

Browse files
committed
fix: use extraShare flag to guard extra share info in CQuorumRotationInfo, don't use std::optional
1 parent 5dbe407 commit aac519f

File tree

3 files changed

+15
-23
lines changed

3 files changed

+15
-23
lines changed

src/llmq/snapshot.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ UniValue CQuorumRotationInfo::ToJson() const
4545
obj.pushKV("quorumSnapshotAtHMinus2C", quorumSnapshotAtHMinus2C.ToJson());
4646
obj.pushKV("quorumSnapshotAtHMinus3C", quorumSnapshotAtHMinus3C.ToJson());
4747

48-
if (extraShare && quorumSnapshotAtHMinus4C.has_value()) {
49-
obj.pushKV("quorumSnapshotAtHMinus4C", quorumSnapshotAtHMinus4C->ToJson());
48+
if (extraShare) {
49+
obj.pushKV("quorumSnapshotAtHMinus4C", quorumSnapshotAtHMinus4C.ToJson());
5050
}
5151

5252
obj.pushKV("mnListDiffTip", mnListDiffTip.ToJson());
@@ -55,8 +55,8 @@ UniValue CQuorumRotationInfo::ToJson() const
5555
obj.pushKV("mnListDiffAtHMinus2C", mnListDiffAtHMinus2C.ToJson());
5656
obj.pushKV("mnListDiffAtHMinus3C", mnListDiffAtHMinus3C.ToJson());
5757

58-
if (extraShare && mnListDiffAtHMinus4C.has_value()) {
59-
obj.pushKV("mnListDiffAtHMinus4C", mnListDiffAtHMinus4C->ToJson());
58+
if (extraShare) {
59+
obj.pushKV("mnListDiffAtHMinus4C", mnListDiffAtHMinus4C.ToJson());
6060
}
6161
UniValue hqclists(UniValue::VARR);
6262
for (const auto& qc : lastCommitmentPerIndex) {
@@ -267,7 +267,7 @@ bool BuildQuorumRotationInfo(CDeterministicMNManager& dmnman, CQuorumSnapshotMan
267267
errorRet = strprintf("Can not find quorum snapshot at H-4C");
268268
return false;
269269
} else {
270-
response.quorumSnapshotAtHMinus4C = std::move(snapshotHMinus4C);
270+
response.quorumSnapshotAtHMinus4C = std::move(snapshotHMinus4C.value());
271271
}
272272

273273
CSimplifiedMNListDiff mn4c;
@@ -283,8 +283,6 @@ bool BuildQuorumRotationInfo(CDeterministicMNManager& dmnman, CQuorumSnapshotMan
283283
response.mnListDiffAtHMinus4C = std::move(mn4c);
284284
} else {
285285
response.extraShare = false;
286-
response.quorumSnapshotAtHMinus4C.reset();
287-
response.mnListDiffAtHMinus4C.reset();
288286
}
289287

290288
std::set<int> snapshotHeightsNeeded;

src/llmq/snapshot.h

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ class CQuorumRotationInfo
116116
CSimplifiedMNListDiff mnListDiffAtHMinus3C;
117117

118118
bool extraShare{false};
119-
std::optional<CQuorumSnapshot> quorumSnapshotAtHMinus4C;
120-
std::optional<CSimplifiedMNListDiff> mnListDiffAtHMinus4C;
119+
CQuorumSnapshot quorumSnapshotAtHMinus4C;
120+
CSimplifiedMNListDiff mnListDiffAtHMinus4C;
121121

122122
std::vector<llmq::CFinalCommitment> lastCommitmentPerIndex;
123123
std::vector<CQuorumSnapshot> quorumSnapshotList;
@@ -142,12 +142,9 @@ class CQuorumRotationInfo
142142
{
143143
const_cast<CQuorumRotationInfo*>(this)->SerializationOpBase(s, CSerActionSerialize());
144144

145-
if (extraShare && quorumSnapshotAtHMinus4C.has_value()) {
146-
::Serialize(s, quorumSnapshotAtHMinus4C.value());
147-
}
148-
149-
if (extraShare && mnListDiffAtHMinus4C.has_value()) {
150-
::Serialize(s, mnListDiffAtHMinus4C.value());
145+
if (extraShare) {
146+
::Serialize(s, quorumSnapshotAtHMinus4C);
147+
::Serialize(s, mnListDiffAtHMinus4C);
151148
}
152149

153150
WriteCompactSize(s, lastCommitmentPerIndex.size());
@@ -171,12 +168,9 @@ class CQuorumRotationInfo
171168
{
172169
SerializationOpBase(s, CSerActionUnserialize());
173170

174-
if (extraShare && quorumSnapshotAtHMinus4C.has_value()) {
175-
::Unserialize(s, quorumSnapshotAtHMinus4C.value());
176-
}
177-
178-
if (extraShare && mnListDiffAtHMinus4C.has_value()) {
179-
::Unserialize(s, mnListDiffAtHMinus4C.value());
171+
if (extraShare) {
172+
::Unserialize(s, quorumSnapshotAtHMinus4C);
173+
::Unserialize(s, mnListDiffAtHMinus4C);
180174
}
181175

182176
size_t cnt = ReadCompactSize(s);

src/test/llmq_snapshot_tests.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,8 @@ BOOST_AUTO_TEST_CASE(quorum_rotation_info_construction_test)
162162

163163
// Test default state
164164
BOOST_CHECK(!rotInfo.extraShare);
165-
BOOST_CHECK(!rotInfo.quorumSnapshotAtHMinus4C.has_value());
166-
BOOST_CHECK(!rotInfo.mnListDiffAtHMinus4C.has_value());
165+
BOOST_CHECK_EQUAL(::SerializeHash(rotInfo.quorumSnapshotAtHMinus4C), ::SerializeHash(CQuorumSnapshot()));
166+
BOOST_CHECK_EQUAL(::SerializeHash(rotInfo.mnListDiffAtHMinus4C), ::SerializeHash(CSimplifiedMNListDiff()));
167167
BOOST_CHECK(rotInfo.lastCommitmentPerIndex.empty());
168168
BOOST_CHECK(rotInfo.quorumSnapshotList.empty());
169169
BOOST_CHECK(rotInfo.mnListDiffList.empty());

0 commit comments

Comments
 (0)