chore(download): response validation order (#1537)

This commit is contained in:
Roman Krasiuk
2023-02-24 10:35:03 +02:00
committed by GitHub
parent b14ee4e925
commit f21f9c5b4e

View File

@ -345,9 +345,6 @@ where
trace!(target: "downloaders::headers", len=%headers.len(), "Received headers response");
// sort headers from highest to lowest block number
headers.sort_unstable_by_key(|h| Reverse(h.number));
if headers.is_empty() {
return Err(HeadersResponseError {
request,
@ -356,6 +353,20 @@ where
})
}
if (headers.len() as u64) != request.limit {
return Err(HeadersResponseError {
peer_id: Some(peer_id),
error: DownloadError::HeadersResponseTooShort {
received: headers.len() as u64,
expected: request.limit,
},
request,
})
}
// sort headers from highest to lowest block number
headers.sort_unstable_by_key(|h| Reverse(h.number));
// validate the response
let highest = &headers[0];
@ -372,17 +383,6 @@ where
})
}
if (headers.len() as u64) != request.limit {
return Err(HeadersResponseError {
peer_id: Some(peer_id),
error: DownloadError::HeadersResponseTooShort {
received: headers.len() as u64,
expected: request.limit,
},
request,
})
}
// check if the response is the next expected
if highest.number == self.next_chain_tip_block_number {
// is next response, validate it