diff --git a/nano/nano_node/entry.cpp b/nano/nano_node/entry.cpp index eeb5af6d..425ac08d 100644 --- a/nano/nano_node/entry.cpp +++ b/nano/nano_node/entry.cpp @@ -155,11 +155,6 @@ int main (int argc, char * const * argv) std::cerr << flags_ec.message () << std::endl; std::exit (1); } - auto config (vm.find ("config")); - if (config != vm.end ()) - { - flags.config_overrides = config->second.as> (); - } daemon.run (data_path, flags); } else if (vm.count ("debug_block_count")) diff --git a/nano/nano_wallet/entry.cpp b/nano/nano_wallet/entry.cpp index 570d3904..290808e3 100644 --- a/nano/nano_wallet/entry.cpp +++ b/nano/nano_wallet/entry.cpp @@ -64,7 +64,7 @@ nano::error read_wallet_config (nano::wallet_config & config_a, boost::filesyste } } -int run_wallet (QApplication & application, int argc, char * const * argv, boost::filesystem::path const & data_path, std::vector const & config_overrides, nano::node_flags const & flags) +int run_wallet (QApplication & application, int argc, char * const * argv, boost::filesystem::path const & data_path, nano::node_flags const & flags) { int result (0); nano_qt::eventloop_processor processor; @@ -81,7 +81,7 @@ int run_wallet (QApplication & application, int argc, char * const * argv, boost nano::daemon_config config (data_path); nano::wallet_config wallet_config; - auto error = nano::read_node_config_toml (data_path, config, config_overrides); + auto error = nano::read_node_config_toml (data_path, config, flags.config_overrides); if (!error) { error = read_wallet_config (wallet_config, data_path); @@ -331,12 +331,7 @@ int main (int argc, char * const * argv) { throw std::runtime_error (flags_ec.message ()); } - auto config (vm.find ("config")); - if (config != vm.end ()) - { - flags.config_overrides = config->second.as> (); - } - result = run_wallet (application, argc, argv, data_path, config_overrides, flags); + result = run_wallet (application, argc, argv, data_path, flags); } catch (std::exception const & e) { diff --git a/nano/node/cli.cpp b/nano/node/cli.cpp index 45f4823a..edb1af4a 100644 --- a/nano/node/cli.cpp +++ b/nano/node/cli.cpp @@ -169,6 +169,12 @@ std::error_code nano::update_flags (nano::node_flags & flags_a, boost::program_o { flags_a.vote_processor_capacity = vote_processor_capacity_it->second.as (); } + // Config overriding + auto config (vm.find ("config")); + if (config != vm.end ()) + { + flags_a.config_overrides = config->second.as> (); + } return ec; } diff --git a/nano/node/node.cpp b/nano/node/node.cpp index 84811903..e6597f60 100644 --- a/nano/node/node.cpp +++ b/nano/node/node.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -1355,7 +1356,23 @@ peering_port (peering_port_a) nano::set_secure_perm_directory (path, error_chmod); logging.max_size = std::numeric_limits::max (); logging.init (path); - node = std::make_shared (*io_context, peering_port, path, alarm, logging, work, node_flags); + // Config overriding + nano::node_config config (peering_port, logging); + std::stringstream config_overrides_stream; + for (auto const & entry : node_flags.config_overrides) + { + config_overrides_stream << entry << std::endl; + } + config_overrides_stream << std::endl; + nano::tomlconfig toml; + toml.read (config_overrides_stream); + auto error = config.deserialize_toml (toml); + if (error) + { + std::cerr << "Error deserializing --config option" << std::endl; + std::exit (1); + } + node = std::make_shared (*io_context, path, alarm, config, work, node_flags); node->active.stop (); }