allow genesis block to be latest
This commit is contained in:
parent
83de16da88
commit
1dc957e3a5
@ -214,7 +214,15 @@ impl HeaderChain {
|
|||||||
.and_then(|hash| self.headers.read().get(&hash).cloned())
|
.and_then(|hash| self.headers.read().get(&hash).cloned())
|
||||||
}
|
}
|
||||||
BlockId::Latest | BlockId::Pending => {
|
BlockId::Latest | BlockId::Pending => {
|
||||||
let hash = self.best_block.read().hash;
|
let hash = {
|
||||||
|
let best = self.best_block.read();
|
||||||
|
if best.number == 0 {
|
||||||
|
return Some(self.genesis_header.clone())
|
||||||
|
}
|
||||||
|
|
||||||
|
best.hash
|
||||||
|
};
|
||||||
|
|
||||||
self.headers.read().get(&hash).cloned()
|
self.headers.read().get(&hash).cloned()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -380,4 +388,16 @@ mod tests {
|
|||||||
num -= 1;
|
num -= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn earliest_is_latest() {
|
||||||
|
let spec = Spec::new_test();
|
||||||
|
let genesis_header = spec.genesis_header();
|
||||||
|
|
||||||
|
let chain = HeaderChain::new(&::rlp::encode(&genesis_header));
|
||||||
|
|
||||||
|
assert!(chain.get_header(BlockId::Earliest).is_some());
|
||||||
|
assert!(chain.get_header(BlockId::Latest).is_some());
|
||||||
|
assert!(chain.get_header(BlockId::Pending).is_some());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user