Skip to content

Commit cf7b5c0

Browse files
Merge pull request #1306 from mintlayer/p2p_v2_issues
Fix some p2p issues
2 parents 1133610 + cf33e0e commit cf7b5c0

File tree

13 files changed

+1186
-268
lines changed

13 files changed

+1186
-268
lines changed

p2p/backend-test-suite/src/ban.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,12 +133,14 @@ where
133133
};
134134
messaging_handle_2
135135
.send_message(peer, SyncMessage::HeaderList(HeaderList::new(Vec::new())))
136+
.await
136137
.unwrap();
137138
messaging_handle_2
138139
.send_message(
139140
peer,
140141
SyncMessage::HeaderList(HeaderList::new(vec![block.header().clone()])),
141142
)
143+
.await
142144
.unwrap();
143145
});
144146

p2p/backend-test-suite/src/block_announcement.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ where
9494
peer2.peer_id,
9595
SyncMessage::HeaderList(HeaderList::new(vec![block.header().clone()])),
9696
)
97+
.await
9798
.unwrap();
9899

99100
let mut sync_msg_rx_2 = match sync2.poll_next().await.unwrap() {
@@ -130,6 +131,7 @@ where
130131
peer1.peer_id,
131132
SyncMessage::HeaderList(HeaderList::new(vec![block.header().clone()])),
132133
)
134+
.await
133135
.unwrap();
134136

135137
let mut sync_msg_rx_1 = match sync1.poll_next().await.unwrap() {
@@ -236,6 +238,7 @@ where
236238
peer2.peer_id,
237239
SyncMessage::HeaderList(HeaderList::new(vec![block.header().clone()])),
238240
)
241+
.await
239242
.unwrap();
240243

241244
shutdown.store(true);

p2p/src/error.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,15 @@ pub enum ProtocolError {
4949
DuplicatedBlockRequest(Id<Block>),
5050
#[error("Headers aren't connected")]
5151
DisconnectedHeaders,
52-
#[error("Received a message ({0}) that wasn't expected")]
52+
#[error("Peer sent a message ({0}) that wasn't expected")]
5353
UnexpectedMessage(String),
54+
#[error("Peer sent a block ({0}) that wasn't requested")]
55+
UnsolicitedBlockReceived(Id<Block>),
56+
#[error("Peer sent block {expected_block_id} while it was expected to send {actual_block_id}")]
57+
BlocksReceivedInWrongOrder {
58+
expected_block_id: Id<Block>,
59+
actual_block_id: Id<Block>,
60+
},
5461
#[error("Empty block list requested")]
5562
ZeroBlocksInRequest,
5663
#[error("Handshake expected")]
@@ -227,6 +234,11 @@ impl BanScore for ProtocolError {
227234
ProtocolError::DuplicatedBlockRequest(_) => 20,
228235
ProtocolError::DisconnectedHeaders => 20,
229236
ProtocolError::UnexpectedMessage(_) => 20,
237+
ProtocolError::UnsolicitedBlockReceived(_) => 20,
238+
ProtocolError::BlocksReceivedInWrongOrder {
239+
expected_block_id: _,
240+
actual_block_id: _,
241+
} => 20,
230242
ProtocolError::ZeroBlocksInRequest => 20,
231243
ProtocolError::HandshakeExpected => 100,
232244
ProtocolError::AddressListLimitExceeded => 100,

p2p/src/net/default_backend/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,10 @@ where
142142
}
143143
}
144144

145+
#[async_trait]
145146
impl MessagingService for MessagingHandle {
146-
fn send_message(&mut self, peer_id: PeerId, message: SyncMessage) -> crate::Result<()> {
147+
async fn send_message(&mut self, peer_id: PeerId, message: SyncMessage) -> crate::Result<()> {
148+
// Note: send_message was made async to be able to use a bounded channel in tests.
147149
Ok(self.command_sender.send(types::Command::SendMessage {
148150
peer_id,
149151
message: message.into(),

p2p/src/net/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,10 @@ where
122122
}
123123

124124
/// An interface for sending messages and announcements to peers.
125+
#[async_trait]
125126
pub trait MessagingService: Clone {
126127
/// Sends a message to the peer.
127-
fn send_message(&mut self, peer: PeerId, message: SyncMessage) -> crate::Result<()>;
128+
async fn send_message(&mut self, peer: PeerId, message: SyncMessage) -> crate::Result<()>;
128129
}
129130

130131
#[async_trait]

0 commit comments

Comments
 (0)