@@ -85,17 +85,23 @@ BOOST_AUTO_TEST_CASE(SimpleRoundTripTest)
85
85
BOOST_CHECK_EQUAL (pool.size (), poolSize - 1 );
86
86
87
87
CBlock block2;
88
- std::vector<CTransactionRef> vtx_missing;
89
- BOOST_CHECK (partialBlock.FillBlock (block2, vtx_missing) == READ_STATUS_INVALID); // No transactions
88
+ {
89
+ PartiallyDownloadedBlock tmp = partialBlock;
90
+ BOOST_CHECK (partialBlock.FillBlock (block2, {}) == READ_STATUS_INVALID); // No transactions
91
+ partialBlock = tmp;
92
+ }
90
93
91
- vtx_missing.push_back (block.vtx [2 ]); // Wrong transaction
92
- partialBlock.FillBlock (block2, vtx_missing); // Current implementation doesn't check txn here, but don't require that
94
+ // Wrong transaction
95
+ {
96
+ PartiallyDownloadedBlock tmp = partialBlock;
97
+ partialBlock.FillBlock (block2, {block.vtx [2 ]}); // Current implementation doesn't check txn here, but don't require that
98
+ partialBlock = tmp;
99
+ }
93
100
bool mutated;
94
101
BOOST_CHECK (block.hashMerkleRoot != BlockMerkleRoot (block2, &mutated));
95
102
96
- vtx_missing[0 ] = block.vtx [1 ];
97
103
CBlock block3;
98
- BOOST_CHECK (partialBlock.FillBlock (block3, vtx_missing ) == READ_STATUS_OK);
104
+ BOOST_CHECK (partialBlock.FillBlock (block3, {block. vtx [ 1 ]} ) == READ_STATUS_OK);
99
105
BOOST_CHECK_EQUAL (block.GetHash ().ToString (), block3.GetHash ().ToString ());
100
106
BOOST_CHECK_EQUAL (block.hashMerkleRoot .ToString (), BlockMerkleRoot (block3, &mutated).ToString ());
101
107
BOOST_CHECK (!mutated);
@@ -181,17 +187,24 @@ BOOST_AUTO_TEST_CASE(NonCoinbasePreforwardRTTest)
181
187
BOOST_CHECK_EQUAL (pool.mapTx .find (block.vtx [2 ]->GetHash ())->GetSharedTx ().use_count (), SHARED_TX_OFFSET + 1 );
182
188
183
189
CBlock block2;
184
- std::vector<CTransactionRef> vtx_missing;
185
- BOOST_CHECK (partialBlock.FillBlock (block2, vtx_missing) == READ_STATUS_INVALID); // No transactions
190
+ {
191
+ PartiallyDownloadedBlock tmp = partialBlock;
192
+ BOOST_CHECK (partialBlock.FillBlock (block2, {}) == READ_STATUS_INVALID); // No transactions
193
+ partialBlock = tmp;
194
+ }
186
195
187
- vtx_missing.push_back (block.vtx [1 ]); // Wrong transaction
188
- partialBlock.FillBlock (block2, vtx_missing); // Current implementation doesn't check txn here, but don't require that
196
+ // Wrong transaction
197
+ {
198
+ PartiallyDownloadedBlock tmp = partialBlock;
199
+ partialBlock.FillBlock (block2, {block.vtx [1 ]}); // Current implementation doesn't check txn here, but don't require that
200
+ partialBlock = tmp;
201
+ }
189
202
bool mutated;
190
203
BOOST_CHECK (block.hashMerkleRoot != BlockMerkleRoot (block2, &mutated));
191
204
192
- vtx_missing[0 ] = block.vtx [0 ];
193
205
CBlock block3;
194
- BOOST_CHECK (partialBlock.FillBlock (block3, vtx_missing) == READ_STATUS_OK);
206
+ PartiallyDownloadedBlock partialBlockCopy = partialBlock;
207
+ BOOST_CHECK (partialBlock.FillBlock (block3, {block.vtx [0 ]}) == READ_STATUS_OK);
195
208
BOOST_CHECK_EQUAL (block.GetHash ().ToString (), block3.GetHash ().ToString ());
196
209
BOOST_CHECK_EQUAL (block.hashMerkleRoot .ToString (), BlockMerkleRoot (block3, &mutated).ToString ());
197
210
BOOST_CHECK (!mutated);
@@ -200,7 +213,7 @@ BOOST_AUTO_TEST_CASE(NonCoinbasePreforwardRTTest)
200
213
block.vtx .clear ();
201
214
block2.vtx .clear ();
202
215
block3.vtx .clear ();
203
- BOOST_CHECK_EQUAL (pool.mapTx .find (txhash)->GetSharedTx ().use_count (), SHARED_TX_OFFSET + 1 );
216
+ BOOST_CHECK_EQUAL (pool.mapTx .find (txhash)->GetSharedTx ().use_count (), SHARED_TX_OFFSET + 1 ); // + 1 because of partialBlockCopy.
204
217
}
205
218
BOOST_CHECK_EQUAL (pool.mapTx .find (txhash)->GetSharedTx ().use_count (), SHARED_TX_OFFSET + 0 );
206
219
}
@@ -240,8 +253,8 @@ BOOST_AUTO_TEST_CASE(SufficientPreforwardRTTest)
240
253
BOOST_CHECK_EQUAL (pool.mapTx .find (block.vtx [1 ]->GetHash ())->GetSharedTx ().use_count (), SHARED_TX_OFFSET + 1 );
241
254
242
255
CBlock block2;
243
- std::vector<CTransactionRef> vtx_missing ;
244
- BOOST_CHECK (partialBlock.FillBlock (block2, vtx_missing ) == READ_STATUS_OK);
256
+ PartiallyDownloadedBlock partialBlockCopy = partialBlock ;
257
+ BOOST_CHECK (partialBlock.FillBlock (block2, {} ) == READ_STATUS_OK);
245
258
BOOST_CHECK_EQUAL (block.GetHash ().ToString (), block2.GetHash ().ToString ());
246
259
bool mutated;
247
260
BOOST_CHECK_EQUAL (block.hashMerkleRoot .ToString (), BlockMerkleRoot (block2, &mutated).ToString ());
@@ -250,7 +263,7 @@ BOOST_AUTO_TEST_CASE(SufficientPreforwardRTTest)
250
263
txhash = block.vtx [1 ]->GetHash ();
251
264
block.vtx .clear ();
252
265
block2.vtx .clear ();
253
- BOOST_CHECK_EQUAL (pool.mapTx .find (txhash)->GetSharedTx ().use_count (), SHARED_TX_OFFSET + 1 );
266
+ BOOST_CHECK_EQUAL (pool.mapTx .find (txhash)->GetSharedTx ().use_count (), SHARED_TX_OFFSET + 1 ); // + 1 because of partialBlockCopy.
254
267
}
255
268
BOOST_CHECK_EQUAL (pool.mapTx .find (txhash)->GetSharedTx ().use_count (), SHARED_TX_OFFSET + 0 );
256
269
}
0 commit comments