mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 15:47:58 +00:00
Default block announce validation should reject additional data (#7726)
If we are using the default block announce validator and receive additional data alongside the block announcement, we should disconnect this peer.
This commit is contained in:
@@ -324,6 +324,8 @@ pub enum PollBlockAnnounceValidation<H> {
|
||||
Failure {
|
||||
/// Who sent the processed block announcement?
|
||||
who: PeerId,
|
||||
/// Should the peer be disconnected?
|
||||
disconnect: bool,
|
||||
},
|
||||
/// The announcement does not require further handling.
|
||||
Nothing {
|
||||
@@ -354,6 +356,8 @@ enum PreValidateBlockAnnounce<H> {
|
||||
Failure {
|
||||
/// Who sent the processed block announcement?
|
||||
who: PeerId,
|
||||
/// Should the peer be disconnected?
|
||||
disconnect: bool,
|
||||
},
|
||||
/// The announcement does not require further handling.
|
||||
Nothing {
|
||||
@@ -1215,14 +1219,14 @@ impl<B: BlockT> ChainSync<B> {
|
||||
announce,
|
||||
who,
|
||||
},
|
||||
Ok(Validation::Failure) => {
|
||||
Ok(Validation::Failure { disconnect }) => {
|
||||
debug!(
|
||||
target: "sync",
|
||||
"Block announcement validation of block {} from {} failed",
|
||||
hash,
|
||||
who,
|
||||
);
|
||||
PreValidateBlockAnnounce::Failure { who }
|
||||
PreValidateBlockAnnounce::Failure { who, disconnect }
|
||||
}
|
||||
Err(e) => {
|
||||
error!(target: "sync", "💔 Block announcement validation errored: {}", e);
|
||||
@@ -1280,9 +1284,9 @@ impl<B: BlockT> ChainSync<B> {
|
||||
self.peer_block_announce_validation_finished(&who);
|
||||
return PollBlockAnnounceValidation::Nothing { is_best, who, header: announce.header }
|
||||
},
|
||||
PreValidateBlockAnnounce::Failure { who } => {
|
||||
PreValidateBlockAnnounce::Failure { who, disconnect } => {
|
||||
self.peer_block_announce_validation_finished(&who);
|
||||
return PollBlockAnnounceValidation::Failure { who }
|
||||
return PollBlockAnnounceValidation::Failure { who, disconnect }
|
||||
},
|
||||
PreValidateBlockAnnounce::Process { announce, is_new_best, who } => {
|
||||
self.peer_block_announce_validation_finished(&who);
|
||||
|
||||
Reference in New Issue
Block a user