File tree Expand file tree Collapse file tree 2 files changed +13
-5
lines changed
Expand file tree Collapse file tree 2 files changed +13
-5
lines changed Original file line number Diff line number Diff line change @@ -100,6 +100,10 @@ impl HeaderDownloader {
100100 }
101101 }
102102
103+ pub fn pivot_score ( & self ) -> U256 {
104+ self . pivot . total_score
105+ }
106+
103107 pub fn is_idle ( & self ) -> bool {
104108 let can_request = self . request_time . is_none ( ) && self . total_score > self . pivot . total_score ;
105109
Original file line number Diff line number Diff line change @@ -662,12 +662,14 @@ impl Extension {
662662
663663 fn on_header_response ( & mut self , from : & NodeId , headers : & [ Header ] ) {
664664 ctrace ! ( SYNC , "Received header response from({}) with length({})" , from, headers. len( ) ) ;
665- let mut completed = if let Some ( peer) = self . header_downloaders . get_mut ( from) {
665+ let ( mut completed, pivot_score_changed) = if let Some ( peer) = self . header_downloaders . get_mut ( from) {
666+ let before_pivot_score = peer. pivot_score ( ) ;
666667 let encoded: Vec < _ > = headers. iter ( ) . map ( |h| EncodedHeader :: new ( h. rlp_bytes ( ) . to_vec ( ) ) ) . collect ( ) ;
667668 peer. import_headers ( & encoded) ;
668- peer. downloaded ( )
669+ let after_pivot_score = peer. pivot_score ( ) ;
670+ ( peer. downloaded ( ) , before_pivot_score != after_pivot_score)
669671 } else {
670- Vec :: new ( )
672+ ( Vec :: new ( ) , false )
671673 } ;
672674 completed. sort_unstable_by_key ( |header| header. number ( ) ) ;
673675
@@ -688,8 +690,10 @@ impl Extension {
688690 peer. mark_as_imported ( exists) ;
689691 peer. create_request ( )
690692 } ) ;
691- if let Some ( request) = request {
692- self . send_header_request ( from, request) ;
693+ if pivot_score_changed {
694+ if let Some ( request) = request {
695+ self . send_header_request ( from, request) ;
696+ }
693697 }
694698 }
695699
You can’t perform that action at this time.
0 commit comments