diff --git a/include/bitcoin/node/full_node.hpp b/include/bitcoin/node/full_node.hpp index 6fc4359d..0f36eb57 100644 --- a/include/bitcoin/node/full_node.hpp +++ b/include/bitcoin/node/full_node.hpp @@ -103,7 +103,7 @@ class BCN_API full_node /// ----------------------------------------------------------------------- /// Resume nework connections. - void resume() NOEXCEPT override; + bool resume() NOEXCEPT override; /// Suspend all existing and future network connections. /// A race condition can result in an unsuspended connection. diff --git a/include/bitcoin/node/protocols/protocol.hpp b/include/bitcoin/node/protocols/protocol.hpp index 0846446d..bd8ecafb 100644 --- a/include/bitcoin/node/protocols/protocol.hpp +++ b/include/bitcoin/node/protocols/protocol.hpp @@ -96,7 +96,7 @@ class BCN_API protocol /// Network suspension (does not affect administrative connections). virtual bool suspended() const NOEXCEPT; virtual void suspend(const code& ec) NOEXCEPT; - virtual void resume() NOEXCEPT; + virtual bool resume() NOEXCEPT; /// Organizers. /// ----------------------------------------------------------------------- diff --git a/include/bitcoin/node/sessions/session.hpp b/include/bitcoin/node/sessions/session.hpp index 36dbeddd..14644fe9 100644 --- a/include/bitcoin/node/sessions/session.hpp +++ b/include/bitcoin/node/sessions/session.hpp @@ -97,7 +97,7 @@ class BCN_API session /// Network suspension (does not affect administrative connections). virtual bool suspended() const NOEXCEPT; virtual void suspend(const code& ec) NOEXCEPT; - virtual void resume() NOEXCEPT; + virtual bool resume() NOEXCEPT; /// Suspend all connections. virtual void fault(const code& ec) NOEXCEPT; diff --git a/src/full_node.cpp b/src/full_node.cpp index e8424ada..15b8be8f 100644 --- a/src/full_node.cpp +++ b/src/full_node.cpp @@ -263,17 +263,23 @@ void full_node::unsubscribe_chase(object_key key) NOEXCEPT // Suspensions. // ---------------------------------------------------------------------------- -void full_node::resume() NOEXCEPT +bool full_node::resume() NOEXCEPT { + if (query_.is_full()) + { + LOGF("Cannot resume network, disk full."); + return false; + } + if (query_.is_fault()) { LOGF("Cannot resume network, " << query_.get_fault()); - return; + return false; } LOGS("Resuming network."); notify(error::success, chase::resume, {}); - net::resume(); + return net::resume(); } // This is just a best effort, the call may have to be repeated. diff --git a/src/protocols/protocol.cpp b/src/protocols/protocol.cpp index e2ecff48..99dad0f2 100644 --- a/src/protocols/protocol.cpp +++ b/src/protocols/protocol.cpp @@ -113,9 +113,9 @@ void protocol::suspend(const code& ec) NOEXCEPT session_->suspend(ec); } -void protocol::resume() NOEXCEPT +bool protocol::resume() NOEXCEPT { - session_->resume(); + return session_->resume(); } // Organizers. diff --git a/src/sessions/session.cpp b/src/sessions/session.cpp index bef72fdd..4d92462f 100644 --- a/src/sessions/session.cpp +++ b/src/sessions/session.cpp @@ -201,9 +201,9 @@ void session::suspend(const code& ec) NOEXCEPT node_.suspend(ec); } -void session::resume() NOEXCEPT +bool session::resume() NOEXCEPT { - node_.resume(); + return node_.resume(); } BC_POP_WARNING()