@@ -99,6 +99,12 @@ fn main() {
9999 . action ( ArgAction :: SetTrue )
100100 . help ( "Disable masternode list synchronization" ) ,
101101 )
102+ . arg (
103+ Arg :: new ( "no-filters" )
104+ . long ( "no-filters" )
105+ . action ( ArgAction :: SetTrue )
106+ . help ( "Disable compact filter synchronization" ) ,
107+ )
102108 . get_matches ( ) ;
103109
104110 // Map network
@@ -109,6 +115,8 @@ fn main() {
109115 _ => FFINetwork :: Dash ,
110116 } ;
111117
118+ let disable_filter_sync = matches. get_flag ( "no-filters" ) ;
119+
112120 unsafe {
113121 // Initialize tracing/logging via FFI so `tracing::info!` emits output
114122 let level = matches. get_one :: < String > ( "log-level" ) . map ( String :: as_str) . unwrap_or ( "info" ) ;
@@ -125,6 +133,8 @@ fn main() {
125133 std:: process:: exit ( 1 ) ;
126134 }
127135
136+ let _ = dash_spv_ffi_config_set_filter_load ( cfg, !disable_filter_sync) ;
137+
128138 if let Some ( workers) = matches. get_one :: < u32 > ( "workers" ) {
129139 let _ = dash_spv_ffi_config_set_worker_threads ( cfg, * workers) ;
130140 }
@@ -201,7 +211,10 @@ fn main() {
201211 let prog_ptr = dash_spv_ffi_client_get_sync_progress ( client) ;
202212 if !prog_ptr. is_null ( ) {
203213 let prog = & * prog_ptr;
204- if prog. headers_synced && prog. filter_headers_synced {
214+ let filters_complete = prog. filter_headers_synced
215+ || !prog. filter_sync_available
216+ || disable_filter_sync;
217+ if prog. headers_synced && filters_complete {
205218 dash_spv_ffi_sync_progress_destroy ( prog_ptr) ;
206219 break ;
207220 }
0 commit comments