Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Commit 348d27b

Browse files
kigawasandresilva
authored andcommitted
gossip: save sender for kept messages (#3738)
1 parent 607d7e8 commit 348d27b

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

core/network/src/protocol/consensus_gossip.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ struct MessageEntry<B: BlockT> {
8989
message_hash: B::Hash,
9090
topic: B::Hash,
9191
message: ConsensusMessage,
92+
sender: Option<PeerId>,
9293
}
9394

9495
/// Consensus message destination.
@@ -322,12 +323,14 @@ impl<B: BlockT> ConsensusGossip<B> {
322323
message_hash: B::Hash,
323324
topic: B::Hash,
324325
message: ConsensusMessage,
326+
sender: Option<PeerId>,
325327
) {
326328
if self.known_messages.insert(message_hash.clone(), ()).is_none() {
327329
self.messages.push(MessageEntry {
328330
message_hash,
329331
topic,
330332
message,
333+
sender,
331334
});
332335
}
333336
}
@@ -343,7 +346,7 @@ impl<B: BlockT> ConsensusGossip<B> {
343346
message: ConsensusMessage,
344347
) {
345348
let message_hash = HashFor::<B>::hash(&message.data[..]);
346-
self.register_message_hashed(message_hash, topic, message);
349+
self.register_message_hashed(message_hash, topic, message, None);
347350
}
348351

349352
/// Call when a peer has been disconnected to stop tracking gossip status.
@@ -429,7 +432,7 @@ impl<B: BlockT> ConsensusGossip<B> {
429432
{
430433
tx.unbounded_send(TopicNotification {
431434
message: entry.message.data.clone(),
432-
sender: None,
435+
sender: entry.sender.clone(),
433436
})
434437
.expect("receiver known to be live; qed");
435438
}
@@ -498,7 +501,7 @@ impl<B: BlockT> ConsensusGossip<B> {
498501
}
499502
}
500503
if keep {
501-
self.register_message_hashed(message_hash, topic, message);
504+
self.register_message_hashed(message_hash, topic, message, Some(who.clone()));
502505
}
503506
} else {
504507
trace!(target:"gossip", "Ignored statement from unregistered peer {}", who);
@@ -553,7 +556,7 @@ impl<B: BlockT> ConsensusGossip<B> {
553556
force: bool,
554557
) {
555558
let message_hash = HashFor::<B>::hash(&message.data);
556-
self.register_message_hashed(message_hash, topic, message.clone());
559+
self.register_message_hashed(message_hash, topic, message.clone(), None);
557560
let intent = if force { MessageIntent::ForcedBroadcast } else { MessageIntent::Broadcast };
558561
propagate(protocol, iter::once((&message_hash, &topic, &message)), intent, &mut self.peers, &self.validators);
559562
}
@@ -618,6 +621,7 @@ mod tests {
618621
message_hash: $hash,
619622
topic: $topic,
620623
message: ConsensusMessage { data: $m, engine_id: [0, 0, 0, 0]},
624+
sender: None,
621625
});
622626
}
623627
}

0 commit comments

Comments
 (0)