From c641aafdde901823a96b77fe015e95559be6a77a Mon Sep 17 00:00:00 2001 From: evoskuil Date: Fri, 2 Jan 2026 03:19:22 -0500 Subject: [PATCH 1/2] Rename settings() to network_settings(). --- include/bitcoin/network/net.hpp | 5 ++- .../bitcoin/network/protocols/protocol.hpp | 2 +- include/bitcoin/network/sessions/session.hpp | 2 +- include/bitcoin/network/settings.hpp | 13 +++++++ src/net.cpp | 16 ++++----- src/protocols/protocol.cpp | 4 +-- src/protocols/protocol_address_in_209.cpp | 4 +-- src/protocols/protocol_address_out_209.cpp | 2 +- src/protocols/protocol_peer.cpp | 4 +-- src/protocols/protocol_ping_106.cpp | 2 +- src/protocols/protocol_seed_209.cpp | 8 ++--- src/protocols/protocol_version_106.cpp | 20 +++++------ src/protocols/protocol_version_70001.cpp | 6 ++-- src/protocols/protocol_version_70002.cpp | 6 ++-- src/protocols/protocol_version_70016.cpp | 8 ++--- src/sessions/session.cpp | 4 +-- src/sessions/session_inbound.cpp | 34 +++++++++---------- src/sessions/session_manual.cpp | 3 +- src/sessions/session_outbound.cpp | 14 ++++---- src/sessions/session_peer.cpp | 19 ++++++----- src/sessions/session_seed.cpp | 28 +++++++-------- src/sessions/session_server.cpp | 4 +-- test/sessions/session.cpp | 12 +++---- 23 files changed, 119 insertions(+), 101 deletions(-) diff --git a/include/bitcoin/network/net.hpp b/include/bitcoin/network/net.hpp index 4a00a682d..fcff631af 100644 --- a/include/bitcoin/network/net.hpp +++ b/include/bitcoin/network/net.hpp @@ -62,7 +62,10 @@ class BCT_API net DELETE_COPY_MOVE(net); - /// Construct an instance. + /// Construct an instance from config. + net(const configuration& config, const logger& log) NOEXCEPT; + + /// Construct an instance from settings (deprecated). net(const settings& settings, const logger& log) NOEXCEPT; /// Calls close(). diff --git a/include/bitcoin/network/protocols/protocol.hpp b/include/bitcoin/network/protocols/protocol.hpp index 20f0ca396..0a983552c 100644 --- a/include/bitcoin/network/protocols/protocol.hpp +++ b/include/bitcoin/network/protocols/protocol.hpp @@ -182,7 +182,7 @@ class BCT_API protocol virtual uint64_t nonce() const NOEXCEPT; /// Network settings. - virtual const network::settings& settings() const NOEXCEPT; + virtual const network::settings& network_settings() const NOEXCEPT; /// Channel identifier (for broadcast identification). virtual uint64_t identifier() const NOEXCEPT; diff --git a/include/bitcoin/network/sessions/session.hpp b/include/bitcoin/network/sessions/session.hpp index c64df1809..75b53caf2 100644 --- a/include/bitcoin/network/sessions/session.hpp +++ b/include/bitcoin/network/sessions/session.hpp @@ -130,7 +130,7 @@ class BCT_API session /// ----------------------------------------------------------------------- /// Access network configuration settings. - const network::settings& settings() const NOEXCEPT; + const network::settings& network_settings() const NOEXCEPT; /// Arbitrary identifier of the session (for net subscriber). uint64_t identifier() const NOEXCEPT; diff --git a/include/bitcoin/network/settings.hpp b/include/bitcoin/network/settings.hpp index 61f120abb..6e23b4461 100644 --- a/include/bitcoin/network/settings.hpp +++ b/include/bitcoin/network/settings.hpp @@ -260,6 +260,19 @@ struct BCT_API settings const messages::peer::address_item& item) const NOEXCEPT; }; +/// Network configuration, thread safe. +class BCT_API configuration +{ +public: + inline configuration(system::chain::selection context) NOEXCEPT + : network(context) + { + } + + /// Settings. + network::settings network; +}; + } // namespace network } // namespace libbitcoin diff --git a/src/net.cpp b/src/net.cpp index 438f73cf7..de1a250f5 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -81,7 +81,7 @@ connectors_ptr net::create_connectors(size_t count) NOEXCEPT const auto connects = to_shared(); connects->reserve(count); - const auto maximum = settings_.outbound.maximum_request; + const auto maximum = network_settings().outbound.maximum_request; for (size_t connect{}; connect < count; ++connect) connects->push_back(create_connector(maximum)); @@ -92,15 +92,15 @@ connectors_ptr net::create_connectors(size_t count) NOEXCEPT connector::ptr net::create_connector(size_t maximum) NOEXCEPT { return emplace_shared(log, strand(), service(), - settings_.connect_timeout(), maximum, connect_suspended_); + network_settings().connect_timeout(), maximum, connect_suspended_); } // seed connector::ptr net::create_connector() NOEXCEPT { return emplace_shared(log, strand(), service(), - settings_.outbound.seeding_timeout(), - settings_.outbound.maximum_request, connect_suspended_); + network_settings().outbound.seeding_timeout(), + network_settings().outbound.maximum_request, connect_suspended_); } // Start sequence. @@ -168,7 +168,7 @@ void net::do_run(const result_handler& handler) NOEXCEPT } // Start manual connections. - for (const auto& peer: settings_.manual.peers) + for (const auto& peer: network_settings().manual.peers) do_connect(peer); // Start inbound connections. @@ -581,7 +581,7 @@ bool net::store_nonce(const channel_peer& channel) NOEXCEPT { BC_ASSERT(stranded()); - if (settings_.inbound.enable_loopback || channel.inbound()) + if (network_settings().inbound.enable_loopback || channel.inbound()) return true; if (!nonces_.insert(channel.nonce()).second) @@ -597,7 +597,7 @@ bool net::unstore_nonce(const channel_peer& channel) NOEXCEPT { BC_ASSERT(stranded()); - if (settings_.inbound.enable_loopback || channel.inbound()) + if (network_settings().inbound.enable_loopback || channel.inbound()) return true; if (!to_bool(nonces_.erase(channel.nonce()))) @@ -613,7 +613,7 @@ bool net::is_loopback(const channel_peer& channel) const NOEXCEPT { BC_ASSERT(stranded()); - if (settings_.inbound.enable_loopback || !channel.inbound()) + if (network_settings().inbound.enable_loopback || !channel.inbound()) return false; return to_bool(nonces_.count(channel.peer_version()->nonce)); diff --git a/src/protocols/protocol.cpp b/src/protocols/protocol.cpp index ffd24ea67..15480d273 100644 --- a/src/protocols/protocol.cpp +++ b/src/protocols/protocol.cpp @@ -144,9 +144,9 @@ uint64_t protocol::nonce() const NOEXCEPT return channel_->nonce(); } -const network::settings& protocol::settings() const NOEXCEPT +const network::settings& protocol::network_settings() const NOEXCEPT { - return session_->settings(); + return session_->network_settings(); } uint64_t protocol::identifier() const NOEXCEPT diff --git a/src/protocols/protocol_address_in_209.cpp b/src/protocols/protocol_address_in_209.cpp index 8b77eac07..6c40998aa 100644 --- a/src/protocols/protocol_address_in_209.cpp +++ b/src/protocols/protocol_address_in_209.cpp @@ -75,7 +75,7 @@ void protocol_address_in_209::start() NOEXCEPT address::cptr protocol_address_in_209::filter( const address_items& items) const NOEXCEPT { - const size_t cap = settings().outbound.host_pool_capacity; + const size_t cap = network_settings().outbound.host_pool_capacity; const size_t gap = cap - address_count(); // Take at least the gap or what we can get. @@ -96,7 +96,7 @@ address::cptr protocol_address_in_209::filter( addresses.resize(select); std::erase_if(addresses, [&](const auto& address) NOEXCEPT { - return settings().excluded(address); + return network_settings().excluded(address); }); return message; diff --git a/src/protocols/protocol_address_out_209.cpp b/src/protocols/protocol_address_out_209.cpp index b806fa819..025c247b8 100644 --- a/src/protocols/protocol_address_out_209.cpp +++ b/src/protocols/protocol_address_out_209.cpp @@ -56,7 +56,7 @@ void protocol_address_out_209::start() NOEXCEPT return; // Advertise self if configured for inbound and with self address(es). - if (settings().inbound.advertise()) + if (network_settings().inbound.advertise()) { SEND(selfs(), handle_send, _1); } diff --git a/src/protocols/protocol_peer.cpp b/src/protocols/protocol_peer.cpp index 8c7fd654e..67a23bbdc 100644 --- a/src/protocols/protocol_peer.cpp +++ b/src/protocols/protocol_peer.cpp @@ -83,8 +83,8 @@ void protocol_peer::set_negotiated_version(uint32_t value) NOEXCEPT address protocol_peer::selfs() const NOEXCEPT { const auto time_now = unix_time(); - const auto services = settings().services_maximum; - const auto& selfs = settings().inbound.selfs; + const auto services = network_settings().services_maximum; + const auto& selfs = network_settings().inbound.selfs; address message{}; message.addresses.reserve(selfs.size()); diff --git a/src/protocols/protocol_ping_106.cpp b/src/protocols/protocol_ping_106.cpp index 1475f7642..a839bba7f 100644 --- a/src/protocols/protocol_ping_106.cpp +++ b/src/protocols/protocol_ping_106.cpp @@ -39,7 +39,7 @@ protocol_ping_106::protocol_ping_106(const session::ptr& session, const channel::ptr& channel) NOEXCEPT : protocol_peer(session, channel), timer_(std::make_shared(session->log, channel->strand(), - session->settings().channel_heartbeat())), + session->network_settings().channel_heartbeat())), tracker(session->log) { } diff --git a/src/protocols/protocol_seed_209.cpp b/src/protocols/protocol_seed_209.cpp index 2156123dd..31ea8a204 100644 --- a/src/protocols/protocol_seed_209.cpp +++ b/src/protocols/protocol_seed_209.cpp @@ -44,7 +44,7 @@ protocol_seed_209::protocol_seed_209(const session::ptr& session, const channel::ptr& channel) NOEXCEPT : protocol_peer(session, channel), timer_(std::make_shared(session->log, channel->strand(), - session->settings().outbound.seeding_timeout())), + session->network_settings().outbound.seeding_timeout())), tracker(session->log) { } @@ -117,7 +117,7 @@ void protocol_seed_209::handle_send_get_address(const code& ec) NOEXCEPT address::cptr protocol_seed_209::filter( const address_items& items) const NOEXCEPT { - const size_t cap = settings().outbound.host_pool_capacity; + const size_t cap = network_settings().outbound.host_pool_capacity; const size_t gap = cap - address_count(); // Take at least the gap or what we can get. @@ -138,7 +138,7 @@ address::cptr protocol_seed_209::filter( addresses.resize(select); std::erase_if(addresses, [&](const auto& address) NOEXCEPT { - return settings().excluded(address); + return network_settings().excluded(address); }); return message; @@ -208,7 +208,7 @@ bool protocol_seed_209::handle_receive_get_address(const code& ec, return false; // Advertise self if configured for inbound and with self address(es). - if (settings().inbound.advertise()) + if (network_settings().inbound.advertise()) { SEND(selfs(), handle_send_address, _1); return true; diff --git a/src/protocols/protocol_version_106.cpp b/src/protocols/protocol_version_106.cpp index 37972498a..37f50f75e 100644 --- a/src/protocols/protocol_version_106.cpp +++ b/src/protocols/protocol_version_106.cpp @@ -45,8 +45,8 @@ using namespace std::placeholders; protocol_version_106::protocol_version_106(const session::ptr& session, const channel::ptr& channel) NOEXCEPT : protocol_version_106(session, channel, - session->settings().services_minimum, - session->settings().services_maximum) + session->network_settings().services_minimum, + session->network_settings().services_maximum) { } @@ -57,14 +57,14 @@ protocol_version_106::protocol_version_106(const session::ptr& session, uint64_t maximum_services) NOEXCEPT : protocol_peer(session, channel), inbound_(channel->inbound()), - minimum_version_(session->settings().protocol_minimum), - maximum_version_(session->settings().protocol_maximum), + minimum_version_(session->network_settings().protocol_minimum), + maximum_version_(session->network_settings().protocol_maximum), minimum_services_(minimum_services), maximum_services_(maximum_services), - invalid_services_(session->settings().invalid_services), - maximum_skew_minutes_(session->settings().maximum_skew_minutes), + invalid_services_(session->network_settings().invalid_services), + maximum_skew_minutes_(session->network_settings().maximum_skew_minutes), timer_(std::make_shared(session->log, channel->strand(), - session->settings().channel_handshake())), + session->network_settings().channel_handshake())), tracker(session->log) { } @@ -110,12 +110,12 @@ messages::peer::version protocol_version_106::version_factory( { timestamp, maximum_services_, - settings().inbound.first_self().to_ip_address(), - settings().inbound.first_self().port(), + network_settings().inbound.first_self().to_ip_address(), + network_settings().inbound.first_self().port(), }, nonce(), - settings().user_agent, + network_settings().user_agent, possible_narrow_cast(start_height()), relay }; diff --git a/src/protocols/protocol_version_70001.cpp b/src/protocols/protocol_version_70001.cpp index 43a110379..90b7bba0e 100644 --- a/src/protocols/protocol_version_70001.cpp +++ b/src/protocols/protocol_version_70001.cpp @@ -38,9 +38,9 @@ using namespace network::messages::peer; protocol_version_70001::protocol_version_70001(const session::ptr& session, const channel::ptr& channel) NOEXCEPT : protocol_version_70001(session, channel, - session->settings().services_minimum, - session->settings().services_maximum, - session->settings().enable_relay) + session->network_settings().services_minimum, + session->network_settings().services_maximum, + session->network_settings().enable_relay) { } diff --git a/src/protocols/protocol_version_70002.cpp b/src/protocols/protocol_version_70002.cpp index bd2beaffd..68f36a631 100644 --- a/src/protocols/protocol_version_70002.cpp +++ b/src/protocols/protocol_version_70002.cpp @@ -39,9 +39,9 @@ using namespace std::placeholders; protocol_version_70002::protocol_version_70002(const session::ptr& session, const channel::ptr& channel) NOEXCEPT : protocol_version_70002(session, channel, - session->settings().services_minimum, - session->settings().services_maximum, - session->settings().enable_relay) + session->network_settings().services_minimum, + session->network_settings().services_maximum, + session->network_settings().enable_relay) { } diff --git a/src/protocols/protocol_version_70016.cpp b/src/protocols/protocol_version_70016.cpp index a488525b1..d327d729e 100644 --- a/src/protocols/protocol_version_70016.cpp +++ b/src/protocols/protocol_version_70016.cpp @@ -43,10 +43,10 @@ using namespace std::placeholders; protocol_version_70016::protocol_version_70016(const session::ptr& session, const channel::ptr& channel) NOEXCEPT : protocol_version_70016(session, channel, - session->settings().services_minimum, - session->settings().services_maximum, - session->settings().enable_relay, - session->settings().enable_reject) + session->network_settings().services_minimum, + session->network_settings().services_maximum, + session->network_settings().enable_relay, + session->network_settings().enable_reject) { } diff --git a/src/sessions/session.cpp b/src/sessions/session.cpp index 37e483f49..6dfc61e9b 100644 --- a/src/sessions/session.cpp +++ b/src/sessions/session.cpp @@ -251,7 +251,7 @@ void session::do_handle_channel_stopped(const code& ec, void session::defer(result_handler&& handler) NOEXCEPT { BC_ASSERT(stranded()); - defer(settings().retry_timeout(), std::move(handler)); + defer(network_settings().retry_timeout(), std::move(handler)); } void session::defer(const steady_clock::duration& timeout, @@ -387,7 +387,7 @@ asio::strand& session::strand() NOEXCEPT return network_.strand(); } -const network::settings& session::settings() const NOEXCEPT +const network::settings& session::network_settings() const NOEXCEPT { return network_.network_settings(); } diff --git a/src/sessions/session_inbound.cpp b/src/sessions/session_inbound.cpp index 2f80ecd59..41fac245f 100644 --- a/src/sessions/session_inbound.cpp +++ b/src/sessions/session_inbound.cpp @@ -52,7 +52,7 @@ void session_inbound::start(result_handler&& handler) NOEXCEPT { BC_ASSERT(stranded()); - if (!settings().inbound.enabled()) + if (!network_settings().inbound.enabled()) { LOGN("Not configured for inbound peer connections."); handler(error::success); @@ -76,11 +76,11 @@ void session_inbound::handle_started(const code& ec, return; } - LOGN("Accepting " << settings().inbound.connections << " peers on " - << settings().inbound.binds.size() << " bindings."); + LOGN("Accepting " << network_settings().inbound.connections << " peers on " + << network_settings().inbound.binds.size() << " bindings."); - const auto maximum = settings().inbound.maximum_request; - for (const auto& bind: settings().inbound.binds) + const auto maximum = network_settings().inbound.maximum_request; + for (const auto& bind: network_settings().inbound.binds) { const auto acceptor = create_acceptor(maximum); @@ -160,7 +160,7 @@ void session_inbound::handle_accepted(const code& ec, } // Could instead stop listening when at limit, though this is simpler. - if (inbound_channel_count() >= settings().inbound.connections) + if (inbound_channel_count() >= network_settings().inbound.connections) { LOGS("Dropping oversubscribed peer [" << socket->authority() << "]."); socket->stop(); @@ -201,12 +201,12 @@ void session_inbound::handle_accepted(const code& ec, bool session_inbound::blacklisted(const config::address& address) const NOEXCEPT { - return settings().blacklisted(address); + return network_settings().blacklisted(address); } bool session_inbound::whitelisted(const config::address& address) const NOEXCEPT { - return settings().whitelisted(address); + return network_settings().whitelisted(address); } bool session_inbound::enabled() const NOEXCEPT @@ -226,13 +226,13 @@ void session_inbound::attach_handshake(const channel::ptr& channel, // Inbound does not require any node services. using namespace messages::peer; constexpr auto minimum_services = service::node_none; - const auto maximum_services = settings().services_maximum; + const auto maximum_services = network_settings().services_maximum; // Protocol must pause the channel after receiving version and verack. const auto self = shared_from_this(); - const auto relay = settings().enable_relay; - const auto reject = settings().enable_reject; - const auto address_v2 = settings().enable_address_v2; + const auto relay = network_settings().enable_relay; + const auto reject = network_settings().enable_reject; + const auto address_v2 = network_settings().enable_address_v2; // protocol_version_70016 sends and receives send_address_v2 even though // inbound connections do not accept addresses. There is no message to @@ -249,7 +249,7 @@ void session_inbound::attach_handshake(const channel::ptr& channel, maximum_services, relay)->shake(std::move(handler)); // TODO: consider relay may be dynamic (disabled until current). - // settings().enable_relay is always passed to the peer during handshake. + // .enable_relay is always passed to the peer during handshake. else if (is_configured(level::bip37)) channel->attach(self, minimum_services, maximum_services, relay)->shake(std::move(handler)); @@ -280,11 +280,11 @@ void session_inbound::attach_protocols( const auto peer = std::dynamic_pointer_cast(channel); // Alert is deprecated, independent of version. - if (peer->is_negotiated(level::alert_message) && settings().enable_alert) + if (peer->is_negotiated(level::alert_message) && network_settings().enable_alert) channel->attach(self)->start(); // Reject is deprecated, independent of version. - if (peer->is_negotiated(level::bip61) && settings().enable_reject) + if (peer->is_negotiated(level::bip61) && network_settings().enable_reject) channel->attach(self)->start(); if (peer->is_negotiated(level::bip31)) @@ -294,14 +294,14 @@ void session_inbound::attach_protocols( // Attach is overridden to disable inbound address protocols. - if (settings().enable_address_v2) + if (network_settings().enable_address_v2) { ////// Sending address v2 is enabled in handshake. ////if (peer->send_address_v2()) //// channel->attach(self)->start(); } - if (settings().enable_address) + if (network_settings().enable_address) { if (peer->is_negotiated(level::get_address_message)) channel->attach(self)->start(); diff --git a/src/sessions/session_manual.cpp b/src/sessions/session_manual.cpp index 30cb2d8dd..6837c0ca2 100644 --- a/src/sessions/session_manual.cpp +++ b/src/sessions/session_manual.cpp @@ -85,7 +85,8 @@ void session_manual::connect(const config::endpoint& peer, BC_ASSERT(stranded()); // Create a persistent connector for the manual connection. - const auto connector = create_connector(settings().manual.maximum_request); + const auto connector = create_connector( + network_settings().manual.maximum_request); subscribe_stop([=](const code&) NOEXCEPT { diff --git a/src/sessions/session_outbound.cpp b/src/sessions/session_outbound.cpp index e5063c5e5..856b76e5a 100644 --- a/src/sessions/session_outbound.cpp +++ b/src/sessions/session_outbound.cpp @@ -55,7 +55,7 @@ void session_outbound::start(result_handler&& handler) NOEXCEPT { BC_ASSERT(stranded()); - if (!settings().outbound.enabled()) + if (!network_settings().outbound.enabled()) { LOGN("Not configured for outbound connections."); handler(error::success); @@ -71,7 +71,7 @@ void session_outbound::start(result_handler&& handler) NOEXCEPT return; } - if (!settings().enable_address) + if (!network_settings().enable_address) { LOGN("Address protocol disabled, may cause empty address pool."); } @@ -92,9 +92,9 @@ void session_outbound::handle_started(const code& ec, return; } - const auto peers = settings().outbound.connections; + const auto peers = network_settings().outbound.connections; - LOG_ONLY(const auto batch = settings().outbound.connect_batch_size;) + LOG_ONLY(const auto batch = network_settings().outbound.connect_batch_size;) LOGN("Create " << peers << " connections " << batch << " at a time."); // There is currently no way to vary the number of connections at runtime. @@ -119,7 +119,7 @@ void session_outbound::start_connect(const code&) NOEXCEPT // Create a set of connectors for batched stop. const auto connectors = create_connectors( - settings().outbound.connect_batch_size); + network_settings().outbound.connect_batch_size); // Subscribe connector set to stop desubscriber. const auto key = subscribe_stop([=](const code&) NOEXCEPT @@ -211,7 +211,7 @@ void session_outbound::handle_connect(const code& ec, if (ec == error::address_not_found) { LOGS("Address pool is empty."); - defer(settings().connect_timeout(), BIND(start_connect, _1)); + defer(network_settings().connect_timeout(), BIND(start_connect, _1)); return; } @@ -280,7 +280,7 @@ void session_outbound::handle_channel_stop(const code& ec, inline bool session_outbound::maybe_reclaim(const code& ec) const NOEXCEPT { // Bypass if host pool is full (don't allow these to evict others). - if (address_count() >= settings().outbound.host_pool_capacity) + if (address_count() >= network_settings().outbound.host_pool_capacity) return false; // Failures that might work later (timeouts can drain pool). diff --git a/src/sessions/session_peer.cpp b/src/sessions/session_peer.cpp index e5333bbed..46c2af3a5 100644 --- a/src/sessions/session_peer.cpp +++ b/src/sessions/session_peer.cpp @@ -148,15 +148,15 @@ void session_peer::attach_handshake(const channel::ptr& channel, const auto self = shared_from_this(); // Address v2 can be disabled, independent of version. - if (is_configured(level::bip155) && settings().enable_address_v2) + if (is_configured(level::bip155) && network_settings().enable_address_v2) channel->attach(self)->shake(std::move(handler)); // Protocol versions are cumulative, but reject is deprecated. - else if (is_configured(level::bip61) && settings().enable_reject) + else if (is_configured(level::bip61) && network_settings().enable_reject) channel->attach(self)->shake(std::move(handler)); // TODO: consider relay may be dynamic (disabled until current). - // settings().enable_relay is always passed to the peer during handshake. + // .enable_relay is always passed to the peer during handshake. else if (is_configured(level::bip37)) channel->attach(self)->shake(std::move(handler)); @@ -175,11 +175,12 @@ void session_peer::attach_protocols(const channel::ptr& channel) NOEXCEPT const auto peer = std::dynamic_pointer_cast(channel); // Alert is deprecated, independent of version. - if (peer->is_negotiated(level::alert_message) && settings().enable_alert) + if (peer->is_negotiated(level::alert_message) && + network_settings().enable_alert) channel->attach(self)->start(); // Reject is deprecated, independent of version. - if (peer->is_negotiated(level::bip61) && settings().enable_reject) + if (peer->is_negotiated(level::bip61) && network_settings().enable_reject) channel->attach(self)->start(); if (peer->is_negotiated(level::bip31)) @@ -187,7 +188,7 @@ void session_peer::attach_protocols(const channel::ptr& channel) NOEXCEPT else if (peer->is_negotiated(level::version_message)) channel->attach(self)->start(); - if (settings().enable_address_v2) + if (network_settings().enable_address_v2) { ////// Address v2 can be disabled, independent of version. ////if (peer->is_negotiated(level::bip155) @@ -198,7 +199,7 @@ void session_peer::attach_protocols(const channel::ptr& channel) NOEXCEPT //// channel->attach(self)->start(); } - if (settings().enable_address) + if (network_settings().enable_address) { if (peer->is_negotiated(level::get_address_message)) { @@ -223,7 +224,7 @@ channel::ptr session_peer::create_channel(const socket::ptr& socket) NOEXCEPT // Channel id must be created using create_key(). // Default message memory resource, override create_channel to replace. return emplace_shared(log, socket, create_key(), - settings(), options_); + network_settings(), options_); } // Properties. @@ -251,7 +252,7 @@ size_t session_peer::outbound_channel_count() const NOEXCEPT bool session_peer::is_configured(messages::peer::level level) const NOEXCEPT { - return settings().protocol_maximum >= level; + return network_settings().protocol_maximum >= level; } const session_peer::options_t& session_peer::options() const NOEXCEPT diff --git a/src/sessions/session_seed.cpp b/src/sessions/session_seed.cpp index 42c2ba42a..2e66f3e60 100644 --- a/src/sessions/session_seed.cpp +++ b/src/sessions/session_seed.cpp @@ -56,8 +56,8 @@ void session_seed::start(result_handler&& handler) NOEXCEPT // Seeding is allowed even with !enable_address configured. - if (is_zero(settings().outbound.connections) || - is_zero(settings().outbound.connect_batch_size)) + if (is_zero(network_settings().outbound.connections) || + is_zero(network_settings().outbound.connect_batch_size)) { LOGN("Bypassed seeding because outbound connections disabled."); handler(error::success); @@ -65,17 +65,17 @@ void session_seed::start(result_handler&& handler) NOEXCEPT return; } - if (address_count() >= settings().outbound.minimum_address_count()) + if (address_count() >= network_settings().outbound.minimum_address_count()) { LOGN("Bypassed seeding because of sufficient (" << address_count() - << " of " << settings().outbound.minimum_address_count() + << " of " << network_settings().outbound.minimum_address_count() << ") address quantity."); handler(error::success); unsubscribe_close(); return; } - if (is_zero(settings().outbound.host_pool_capacity)) + if (is_zero(network_settings().outbound.host_pool_capacity)) { LOGN("Cannot seed because no address pool capacity configured."); handler(error::seeding_unsuccessful); @@ -83,7 +83,7 @@ void session_seed::start(result_handler&& handler) NOEXCEPT return; } - if (settings().outbound.seeds.empty()) + if (network_settings().outbound.seeds.empty()) { LOGN("Cannot seed because no seeds configured"); handler(error::seeding_unsuccessful); @@ -106,8 +106,8 @@ void session_seed::handle_started(const code& ec, return; } - const auto seeds = settings().outbound.seeds.size(); - const auto required = settings().outbound.minimum_address_count(); + const auto seeds = network_settings().outbound.seeds.size(); + const auto required = network_settings().outbound.minimum_address_count(); LOGN("Seeding because of insufficient (" << address_count() << " of " << required << ") address quantity."); @@ -120,7 +120,7 @@ void session_seed::handle_started(const code& ec, // Invoke sufficient on count, invoke complete with all seeds stopped. racer->start(move_copy(handler), BIND(stop_seed, _1)); - for (const auto& seed: settings().outbound.seeds) + for (const auto& seed: network_settings().outbound.seeds) { const auto connector = create_connector(); subscribe_stop([=](const code&) NOEXCEPT @@ -192,8 +192,8 @@ void session_seed::attach_handshake(const channel::ptr& channel, // Protocol must pause the channel after receiving version and verack. const auto self = shared_from_this(); - const auto reject = settings().enable_reject; - const auto address_v2 = settings().enable_address_v2; + const auto reject = network_settings().enable_reject; + const auto address_v2 = network_settings().enable_address_v2; // Address v2 can be disabled, independent of version. if (is_configured(level::bip155) && address_v2) @@ -231,9 +231,9 @@ void session_seed::attach_protocols(const channel::ptr& channel) NOEXCEPT using namespace messages::peer; const auto self = shared_from_this(); - const auto alert = settings().enable_alert; - const auto reject = settings().enable_reject; - const auto address_v2 = settings().enable_address_v2; + const auto alert = network_settings().enable_alert; + const auto reject = network_settings().enable_reject; + const auto address_v2 = network_settings().enable_address_v2; const auto peer = std::dynamic_pointer_cast(channel); // Alert is deprecated, independent of version. diff --git a/src/sessions/session_server.cpp b/src/sessions/session_server.cpp index fc91e447e..4db8e15f5 100644 --- a/src/sessions/session_server.cpp +++ b/src/sessions/session_server.cpp @@ -207,12 +207,12 @@ void session_server::handle_accepted(const code& ec, const socket::ptr& socket, bool session_server::blacklisted(const config::address& address) const NOEXCEPT { - return settings().blacklisted(address); + return network_settings().blacklisted(address); } bool session_server::whitelisted(const config::address& address) const NOEXCEPT { - return settings().whitelisted(address); + return network_settings().whitelisted(address); } bool session_server::enabled() const NOEXCEPT diff --git a/test/sessions/session.cpp b/test/sessions/session.cpp index 137596ab5..89ce5bc5d 100644 --- a/test/sessions/session.cpp +++ b/test/sessions/session.cpp @@ -366,7 +366,7 @@ BOOST_AUTO_TEST_CASE(session__construct__always__expected_settings) set.threads = expected; net net(set, log); mock_session session(net, 1); - BOOST_REQUIRE_EQUAL(session.settings().threads, expected); + BOOST_REQUIRE_EQUAL(session.network_settings().threads, expected); } // properties @@ -618,7 +618,7 @@ BOOST_AUTO_TEST_CASE(session__start_channel__session_not_started__handlers_servi BOOST_REQUIRE(session->stopped()); const auto socket = std::make_shared(net.log, net.service(), 42); - const auto channel = std::make_shared(memory, net.log, socket, 42, session->settings(), options); + const auto channel = std::make_shared(memory, net.log, socket, 42, session->network_settings(), options); std::promise started_channel; std::promise stopped_channel; @@ -674,7 +674,7 @@ BOOST_AUTO_TEST_CASE(session__start_channel__channel_not_started__handlers_chann BOOST_REQUIRE_EQUAL(started.get_future().get(), error::success); const auto socket = std::make_shared(net.log, net.service(), 42); - const auto channel = std::make_shared(memory, net.log, socket, 42, session->settings(), options); + const auto channel = std::make_shared(memory, net.log, socket, 42, session->network_settings(), options); // Stop the channel (started by default). std::promise unstarted_channel; @@ -764,7 +764,7 @@ BOOST_AUTO_TEST_CASE(session__start_channel__all_started__handlers_expected_chan BOOST_REQUIRE_EQUAL(started.get_future().get(), error::success); const auto socket = std::make_shared(net.log, net.service(), 42); - const auto channel = std::make_shared(memory, net.log, socket, 42, session->settings(), options); + const auto channel = std::make_shared(memory, net.log, socket, 42, session->network_settings(), options); std::promise started_channel; std::promise stopped_channel; @@ -846,7 +846,7 @@ BOOST_AUTO_TEST_CASE(session__start_channel__outbound_all_started__handlers_expe BOOST_REQUIRE_EQUAL(started.get_future().get(), error::success); const auto socket = std::make_shared(net.log, net.service(), 42); - const auto channel = std::make_shared(memory, net.log, socket, 42, session->settings(), options); + const auto channel = std::make_shared(memory, net.log, socket, 42, session->network_settings(), options); std::promise started_channel; std::promise stopped_channel; @@ -930,7 +930,7 @@ BOOST_AUTO_TEST_CASE(session__start_channel__inbound_all_started__handlers_expec BOOST_REQUIRE_EQUAL(started.get_future().get(), error::success); const auto socket = std::make_shared(net.log, net.service(), 42); - const auto channel = std::make_shared(memory, net.log, socket, 42, session->settings(), options); + const auto channel = std::make_shared(memory, net.log, socket, 42, session->network_settings(), options); std::promise started_channel; std::promise stopped_channel; From 19d35ca5cb6a051c716a7bfb265eea456a36080d Mon Sep 17 00:00:00 2001 From: evoskuil Date: Fri, 2 Jan 2026 04:55:01 -0500 Subject: [PATCH 2/2] Change protocol_rpc<> arg to Interface for consistency. --- include/bitcoin/network/protocols/protocol_rpc.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/bitcoin/network/protocols/protocol_rpc.hpp b/include/bitcoin/network/protocols/protocol_rpc.hpp index dfbaefc87..e820a2d7d 100644 --- a/include/bitcoin/network/protocols/protocol_rpc.hpp +++ b/include/bitcoin/network/protocols/protocol_rpc.hpp @@ -29,13 +29,13 @@ namespace libbitcoin { namespace network { -template +template class protocol_rpc : public protocol { public: - typedef std::shared_ptr> ptr; - using channel_t = channel_rpc; + typedef std::shared_ptr> ptr; + using channel_t = Channel; using options_t = channel_t::options_t; protected: @@ -65,8 +65,8 @@ class protocol_rpc } // namespace network } // namespace libbitcoin -#define TEMPLATE template -#define CLASS protocol_rpc +#define TEMPLATE template +#define CLASS protocol_rpc #include