diff --git a/grin/src/adapters.rs b/grin/src/adapters.rs index ac63f4dc..0dee6c05 100644 --- a/grin/src/adapters.rs +++ b/grin/src/adapters.rs @@ -239,7 +239,7 @@ impl NetToChainAdapter { } pub fn syncing(&self) -> bool { - self.syncer.borrow().syncing() + self.syncer.is_initialized() && self.syncer.borrow().syncing() } /// Prepare options for the chain pipeline diff --git a/grin/src/server.rs b/grin/src/server.rs index 0fa36122..6ff651bc 100644 --- a/grin/src/server.rs +++ b/grin/src/server.rs @@ -129,8 +129,10 @@ impl Server { } } - let sync = sync::Syncer::new(shared_chain.clone(), p2p_server.clone()); - net_adapter.start_sync(sync); + if config.seeding_type != Seeding::None { + let sync = sync::Syncer::new(shared_chain.clone(), p2p_server.clone()); + net_adapter.start_sync(sync); + } evt_handle.spawn(p2p_server.start(evt_handle.clone()).map_err(|_| ())); diff --git a/grin/src/types.rs b/grin/src/types.rs index 331b89a4..5e32f340 100644 --- a/grin/src/types.rs +++ b/grin/src/types.rs @@ -60,7 +60,7 @@ impl From for Error { } /// Type of seeding the server will use to find other peers on the network. -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] pub enum Seeding { /// No seeding, mostly for tests that programmatically connect None, diff --git a/util/src/lib.rs b/util/src/lib.rs index 1218dbd2..a2859e9a 100644 --- a/util/src/lib.rs +++ b/util/src/lib.rs @@ -73,6 +73,11 @@ impl OneTime { *inner_mut = Some(value); } + pub fn is_initialized(&self) -> bool { + let inner = self.inner.borrow(); + inner.is_some() + } + /// Borrows the OneTime, should only be called after initialization. pub fn borrow(&self) -> Ref { Ref::map(self.inner.borrow(), |o| o.as_ref().unwrap())