@@ -66,25 +66,40 @@ BOOST_AUTO_TEST_CASE(outbound_slow_chain_eviction)
66
66
dummyNode1.fSuccessfullyConnected = true ;
67
67
68
68
// This test requires that we have a chain with non-zero work.
69
- LOCK (cs_main);
70
- BOOST_CHECK (chainActive.Tip () != nullptr );
71
- BOOST_CHECK (chainActive.Tip ()->nChainWork > 0 );
69
+ {
70
+ LOCK (cs_main);
71
+ BOOST_CHECK (chainActive.Tip () != nullptr );
72
+ BOOST_CHECK (chainActive.Tip ()->nChainWork > 0 );
73
+ }
72
74
73
75
// Test starts here
74
- LOCK (dummyNode1.cs_sendProcessing );
75
- peerLogic->SendMessages (&dummyNode1, interruptDummy); // should result in getheaders
76
- LOCK (dummyNode1.cs_vSend );
77
- BOOST_CHECK (dummyNode1.vSendMsg .size () > 0 );
78
- dummyNode1.vSendMsg .clear ();
76
+ {
77
+ LOCK2 (cs_main, dummyNode1.cs_sendProcessing );
78
+ peerLogic->SendMessages (&dummyNode1, interruptDummy); // should result in getheaders
79
+ }
80
+ {
81
+ LOCK2 (cs_main, dummyNode1.cs_vSend );
82
+ BOOST_CHECK (dummyNode1.vSendMsg .size () > 0 );
83
+ dummyNode1.vSendMsg .clear ();
84
+ }
79
85
80
86
int64_t nStartTime = GetTime ();
81
87
// Wait 21 minutes
82
88
SetMockTime (nStartTime+21 *60 );
83
- peerLogic->SendMessages (&dummyNode1, interruptDummy); // should result in getheaders
84
- BOOST_CHECK (dummyNode1.vSendMsg .size () > 0 );
89
+ {
90
+ LOCK2 (cs_main, dummyNode1.cs_sendProcessing );
91
+ peerLogic->SendMessages (&dummyNode1, interruptDummy); // should result in getheaders
92
+ }
93
+ {
94
+ LOCK2 (cs_main, dummyNode1.cs_vSend );
95
+ BOOST_CHECK (dummyNode1.vSendMsg .size () > 0 );
96
+ }
85
97
// Wait 3 more minutes
86
98
SetMockTime (nStartTime+24 *60 );
87
- peerLogic->SendMessages (&dummyNode1, interruptDummy); // should result in disconnect
99
+ {
100
+ LOCK2 (cs_main, dummyNode1.cs_sendProcessing );
101
+ peerLogic->SendMessages (&dummyNode1, interruptDummy); // should result in disconnect
102
+ }
88
103
BOOST_CHECK (dummyNode1.fDisconnect == true );
89
104
SetMockTime (0 );
90
105
@@ -190,8 +205,10 @@ BOOST_AUTO_TEST_CASE(DoS_banning)
190
205
LOCK (cs_main);
191
206
Misbehaving (dummyNode1.GetId (), 100 ); // Should get banned
192
207
}
193
- LOCK (dummyNode1.cs_sendProcessing );
194
- peerLogic->SendMessages (&dummyNode1, interruptDummy);
208
+ {
209
+ LOCK2 (cs_main, dummyNode1.cs_sendProcessing );
210
+ peerLogic->SendMessages (&dummyNode1, interruptDummy);
211
+ }
195
212
BOOST_CHECK (connman->IsBanned (addr1));
196
213
BOOST_CHECK (!connman->IsBanned (ip (0xa0b0c001 |0x0000ff00 ))); // Different IP, not banned
197
214
@@ -205,15 +222,20 @@ BOOST_AUTO_TEST_CASE(DoS_banning)
205
222
LOCK (cs_main);
206
223
Misbehaving (dummyNode2.GetId (), 50 );
207
224
}
208
- LOCK (dummyNode2.cs_sendProcessing );
209
- peerLogic->SendMessages (&dummyNode2, interruptDummy);
225
+ {
226
+ LOCK2 (cs_main, dummyNode2.cs_sendProcessing );
227
+ peerLogic->SendMessages (&dummyNode2, interruptDummy);
228
+ }
210
229
BOOST_CHECK (!connman->IsBanned (addr2)); // 2 not banned yet...
211
230
BOOST_CHECK (connman->IsBanned (addr1)); // ... but 1 still should be
212
231
{
213
232
LOCK (cs_main);
214
233
Misbehaving (dummyNode2.GetId (), 50 );
215
234
}
216
- peerLogic->SendMessages (&dummyNode2, interruptDummy);
235
+ {
236
+ LOCK2 (cs_main, dummyNode2.cs_sendProcessing );
237
+ peerLogic->SendMessages (&dummyNode2, interruptDummy);
238
+ }
217
239
BOOST_CHECK (connman->IsBanned (addr2));
218
240
219
241
bool dummy;
@@ -237,20 +259,28 @@ BOOST_AUTO_TEST_CASE(DoS_banscore)
237
259
LOCK (cs_main);
238
260
Misbehaving (dummyNode1.GetId (), 100 );
239
261
}
240
- LOCK (dummyNode1.cs_sendProcessing );
241
- peerLogic->SendMessages (&dummyNode1, interruptDummy);
262
+ {
263
+ LOCK2 (cs_main, dummyNode1.cs_sendProcessing );
264
+ peerLogic->SendMessages (&dummyNode1, interruptDummy);
265
+ }
242
266
BOOST_CHECK (!connman->IsBanned (addr1));
243
267
{
244
268
LOCK (cs_main);
245
269
Misbehaving (dummyNode1.GetId (), 10 );
246
270
}
247
- peerLogic->SendMessages (&dummyNode1, interruptDummy);
271
+ {
272
+ LOCK2 (cs_main, dummyNode1.cs_sendProcessing );
273
+ peerLogic->SendMessages (&dummyNode1, interruptDummy);
274
+ }
248
275
BOOST_CHECK (!connman->IsBanned (addr1));
249
276
{
250
277
LOCK (cs_main);
251
278
Misbehaving (dummyNode1.GetId (), 1 );
252
279
}
253
- peerLogic->SendMessages (&dummyNode1, interruptDummy);
280
+ {
281
+ LOCK2 (cs_main, dummyNode1.cs_sendProcessing );
282
+ peerLogic->SendMessages (&dummyNode1, interruptDummy);
283
+ }
254
284
BOOST_CHECK (connman->IsBanned (addr1));
255
285
gArgs .ForceSetArg (" -banscore" , std::to_string (DEFAULT_BANSCORE_THRESHOLD));
256
286
@@ -277,8 +307,10 @@ BOOST_AUTO_TEST_CASE(DoS_bantime)
277
307
LOCK (cs_main);
278
308
Misbehaving (dummyNode.GetId (), 100 );
279
309
}
280
- LOCK (dummyNode.cs_sendProcessing );
281
- peerLogic->SendMessages (&dummyNode, interruptDummy);
310
+ {
311
+ LOCK2 (cs_main, dummyNode.cs_sendProcessing );
312
+ peerLogic->SendMessages (&dummyNode, interruptDummy);
313
+ }
282
314
BOOST_CHECK (connman->IsBanned (addr));
283
315
284
316
SetMockTime (nStartTime+60 *60 );
0 commit comments