mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
fix: consider empty headers response edge case (#1180)
This commit is contained in:
@ -31,7 +31,10 @@ impl EthResponseValidator for RequestResult<Vec<Header>> {
|
||||
}
|
||||
|
||||
match request.start {
|
||||
BlockHashOrNumber::Number(block_number) => block_number != headers[0].number,
|
||||
BlockHashOrNumber::Number(block_number) => headers
|
||||
.first()
|
||||
.map(|header| block_number != header.number)
|
||||
.unwrap_or_default(),
|
||||
BlockHashOrNumber::Hash(_) => {
|
||||
// we don't want to hash the header
|
||||
false
|
||||
@ -198,3 +201,21 @@ pub enum DownloadError {
|
||||
#[error(transparent)]
|
||||
DatabaseError(#[from] db::Error),
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_is_likely_bad_headers_response() {
|
||||
let request =
|
||||
HeadersRequest { start: 0u64.into(), limit: 0, direction: Default::default() };
|
||||
let headers: Vec<Header> = vec![];
|
||||
assert!(!Ok(headers).is_likely_bad_headers_response(&request));
|
||||
|
||||
let request =
|
||||
HeadersRequest { start: 0u64.into(), limit: 1, direction: Default::default() };
|
||||
let headers: Vec<Header> = vec![];
|
||||
assert!(Ok(headers).is_likely_bad_headers_response(&request));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user