fix blocksync not resyncing compressed blocs properly
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing

This commit is contained in:
Trinity Pointard 2021-05-31 23:31:17 +02:00
parent f6f0c6f515
commit e44bec738c

View file

@ -599,11 +599,19 @@ impl BlockManager {
Err(_) => continue, Err(_) => continue,
}; };
let ent_type = data_dir_ent.file_type().await?; let ent_type = data_dir_ent.file_type().await?;
let mut iter_name = name.split('.');
let name = iter_name
.next()
.expect("split always contain at least one item");
let corrupted = iter_name
.last()
.map(|ext| ext == "corrupted")
.unwrap_or(false);
if name.len() == 2 && hex::decode(&name).is_ok() && ent_type.is_dir() { if name.len() == 2 && hex::decode(&name).is_ok() && ent_type.is_dir() {
self.repair_aux_read_dir_rec(&data_dir_ent.path(), must_exit) self.repair_aux_read_dir_rec(&data_dir_ent.path(), must_exit)
.await?; .await?;
} else if name.len() == 64 { } else if name.len() == 64 && !corrupted {
let hash_bytes = match hex::decode(&name) { let hash_bytes = match hex::decode(&name) {
Ok(h) => h, Ok(h) => h,
Err(_) => continue, Err(_) => continue,