@@ -358,8 +358,9 @@ where
358
358
debug_assert_eq ! ( prob_conf_height, merkle_res. block_height as u32 ) ;
359
359
match self . client . block_header ( prob_conf_height as usize ) {
360
360
Ok ( block_header) => {
361
+ let pos = merkle_res. pos ;
361
362
if !self . validate_merkle_proof ( & txid,
362
- & block_header. merkle_root , & merkle_res) ?
363
+ & block_header. merkle_root , merkle_res) ?
363
364
{
364
365
log_trace ! ( self . logger,
365
366
"Inconsistency: Block {} was unconfirmed during syncing." ,
@@ -369,7 +370,7 @@ where
369
370
let confirmed_tx = ConfirmedTx {
370
371
tx : tx. clone ( ) ,
371
372
block_header, block_height : prob_conf_height,
372
- pos : merkle_res . pos
373
+ pos,
373
374
} ;
374
375
Ok ( confirmed_tx)
375
376
}
@@ -396,14 +397,13 @@ where
396
397
}
397
398
398
399
fn validate_merkle_proof ( & self , txid : & Txid , merkle_root : & TxMerkleNode ,
399
- merkle_res : & GetMerkleRes ) -> Result < bool , InternalError >
400
+ merkle_res : GetMerkleRes ) -> Result < bool , InternalError >
400
401
{
401
402
let mut index = merkle_res. pos ;
402
403
let mut cur = txid. as_hash ( ) ;
403
- for bytes in & merkle_res. merkle {
404
- let mut reversed = Vec :: with_capacity ( 32 ) ;
405
- reversed. extend ( bytes. iter ( ) . rev ( ) ) ;
406
- let next_hash = Sha256d :: from_slice ( & reversed) . map_err ( |_| {
404
+ for mut bytes in merkle_res. merkle {
405
+ bytes. reverse ( ) ;
406
+ let next_hash = Sha256d :: from_slice ( & bytes) . map_err ( |_| {
407
407
log_error ! ( self . logger,
408
408
"Failed due to the server sending us bogus transaction data. This should not happen. Please verify server integrity."
409
409
) ;
0 commit comments