aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorselsta <selsta@sent.at>2026-05-31 02:37:15 +0200
committerselsta <selsta@sent.at>2026-06-01 19:22:26 +0200
commitec60113e09d9fc985b1c35fe1c579ef73c067d91 (patch)
tree9f22b365dee07c28cdc94bbba9f0416465a40afd /src
parent8a1de602f0a049d85d6f2c7a231d90b3c9cb310e (diff)
downloadmonzero-core-ec60113e09d9fc985b1c35fe1c579ef73c067d91.tar.gz
monzero-core-ec60113e09d9fc985b1c35fe1c579ef73c067d91.tar.xz
monzero-core-ec60113e09d9fc985b1c35fe1c579ef73c067d91.zip
p2p: make stop signal idempotent
Diffstat (limited to 'src')
-rw-r--r--src/p2p/net_node.h1
-rw-r--r--src/p2p/net_node.inl5
2 files changed, 6 insertions, 0 deletions
diff --git a/src/p2p/net_node.h b/src/p2p/net_node.h
index 8e3312f29..d7cbaa567 100644
--- a/src/p2p/net_node.h
+++ b/src/p2p/net_node.h
@@ -451,6 +451,7 @@ namespace nodetool
bool m_use_ipv6;
bool m_require_ipv4;
std::atomic<bool> is_closing;
+ std::atomic<bool> m_stop_signal_sent_once{false};
std::unique_ptr<boost::thread> mPeersLoggerThread;
//critical_section m_connections_lock;
//connections_indexed_container m_connections;
diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl
index d1f7e7cdd..4fbc36031 100644
--- a/src/p2p/net_node.inl
+++ b/src/p2p/net_node.inl
@@ -1107,6 +1107,11 @@ namespace nodetool
template<class t_payload_net_handler>
bool node_server<t_payload_net_handler>::send_stop_signal()
{
+ if (m_stop_signal_sent_once.exchange(true))
+ {
+ MDEBUG("[node] Stop signal already sent");
+ return true;
+ }
MDEBUG("[node] stopping server payload handler");
m_payload_handler.stop();
MDEBUG("[node] sending stop signal");