@@ -506,6 +506,11 @@ impl SyncProtocolHandler {
506506 }
507507
508508 fn send_cached_consensus_messages_for ( & self , sync_io : & mut dyn SyncIo , node_id : & NodeId ) {
509+ let last_interesting_block = self
510+ . chain
511+ . block_number ( types:: ids:: BlockId :: Latest )
512+ . unwrap_or ( 0 ) ;
513+
509514 // now since we are connected, lets send any cached messages
510515 if let Some ( vec_msg) = self . message_cache . write ( ) . remove ( & Some ( * node_id) ) {
511516 trace ! ( target: "consensus" , "Cached Messages: Trying to send cached messages to {:?}" , node_id) ;
@@ -514,7 +519,11 @@ impl SyncProtocolHandler {
514519
515520 for msg in vec_msg {
516521 match msg {
517- ChainMessageType :: Consensus ( message) => {
522+ ChainMessageType :: Consensus ( block, message) => {
523+ if block < last_interesting_block {
524+ // https://github.com/DMDcoin/diamond-node/issues/261
525+ continue ;
526+ }
518527 let send_consensus_result = self . sync . write ( ) . send_consensus_packet (
519528 sync_io,
520529 message. clone ( ) ,
@@ -525,7 +534,7 @@ impl SyncProtocolHandler {
525534 Ok ( _) => { }
526535 Err ( e) => {
527536 info ! ( target: "consensus" , "Error sending cached consensus message to peer (re-adding) {:?}: {:?}" , node_id, e) ;
528- failed_messages. push ( ChainMessageType :: Consensus ( message) ) ;
537+ failed_messages. push ( ChainMessageType :: Consensus ( block , message) ) ;
529538 }
530539 }
531540 }
@@ -534,8 +543,9 @@ impl SyncProtocolHandler {
534543
535544 if !failed_messages. is_empty ( ) {
536545 // If we failed to send some messages, cache them for later
537- let mut lock = self . message_cache . write ( ) ;
538- lock. entry ( Some ( * node_id) )
546+ self . message_cache
547+ . write ( )
548+ . entry ( Some ( * node_id) )
539549 . or_default ( )
540550 . extend ( failed_messages) ;
541551 } else {
@@ -729,7 +739,7 @@ impl ChainNotify for EthSync {
729739 & self . eth_handler . overlay ,
730740 ) ;
731741 match message_type {
732- ChainMessageType :: Consensus ( message) => self
742+ ChainMessageType :: Consensus ( _block , message) => self
733743 . eth_handler
734744 . sync
735745 . write ( )
@@ -746,13 +756,13 @@ impl ChainNotify for EthSync {
746756 & self . eth_handler . overlay ) ;
747757
748758 match message_type {
749- ChainMessageType :: Consensus ( message) => {
759+ ChainMessageType :: Consensus ( block , message) => {
750760 let send_result = self . eth_handler . sync . write ( ) . send_consensus_packet ( & mut sync_io, message. clone ( ) , node_id) ;
751761 if let Err ( e) = send_result {
752762 info ! ( target: "consensus" , "Error sending consensus message to peer - caching message {:?}: {:?}" , node_id, e) ;
753763 // If we failed to send the message, cache it for later
754764 let mut lock = self . eth_handler . message_cache . write ( ) ;
755- lock. entry ( Some ( node_id. clone ( ) ) ) . or_default ( ) . push ( ChainMessageType :: Consensus ( message) ) ;
765+ lock. entry ( Some ( node_id. clone ( ) ) ) . or_default ( ) . push ( ChainMessageType :: Consensus ( block , message) ) ;
756766 }
757767 } ,
758768 }
0 commit comments