allow genesis block to be latest

This commit is contained in:
Robert Habermeier 2017-02-03 16:11:09 +01:00
parent 83de16da88
commit 1dc957e3a5

View File

@ -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());
}
} }