@@ -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