From a552a2bb2d9601dfd6d4fbde392c2772e19b79e1 Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Sat, 9 Oct 2021 13:49:56 +0300 Subject: [PATCH] Allow disabling Electrum RPC while continuing indexing --- internal/config_specification.toml | 4 ++++ src/config.rs | 2 ++ src/server.rs | 11 ++++++----- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/internal/config_specification.toml b/internal/config_specification.toml index ac9d28d..e2a28c1 100644 --- a/internal/config_specification.toml +++ b/internal/config_specification.toml @@ -96,6 +96,10 @@ default = "10" name = "ignore_mempool" doc = "Don't sync mempool - queries will show only confirmed transactions." +[[switch]] +name = "disable_electrum_rpc" +doc = "Disable Electrum RPC server - only sync and index blocks." + [[switch]] name = "sync_once" doc = "Exit after the initial sync is over (don't start Electrum server)." diff --git a/src/config.rs b/src/config.rs index b93a5fe..fbbb28f 100644 --- a/src/config.rs +++ b/src/config.rs @@ -136,6 +136,7 @@ pub struct Config { pub auto_reindex: bool, pub ignore_mempool: bool, pub sync_once: bool, + pub disable_electrum_rpc: bool, pub server_banner: String, pub args: Vec, } @@ -308,6 +309,7 @@ impl Config { auto_reindex: config.auto_reindex, ignore_mempool: config.ignore_mempool, sync_once: config.sync_once, + disable_electrum_rpc: config.disable_electrum_rpc, server_banner: config.server_banner, args: args.map(|a| a.into_string().unwrap()).collect(), }; diff --git a/src/server.rs b/src/server.rs index ec7b867..2cafe4d 100644 --- a/src/server.rs +++ b/src/server.rs @@ -67,13 +67,14 @@ fn serve() -> Result<()> { return Ok(()); } - let listener = TcpListener::bind(config.electrum_rpc_addr)?; - info!("serving Electrum RPC on {}", listener.local_addr()?); - let new_block_rx = rpc.new_block_notification(); - let (server_tx, server_rx) = unbounded(); - spawn("accept_loop", || accept_loop(listener, server_tx)); // detach accepting thread + if !config.disable_electrum_rpc { + let listener = TcpListener::bind(config.electrum_rpc_addr)?; + info!("serving Electrum RPC on {}", listener.local_addr()?); + spawn("accept_loop", || accept_loop(listener, server_tx)); // detach accepting thread + }; + let new_block_rx = rpc.new_block_notification(); let mut peers = HashMap::::new(); loop { select! {