From ec60113e09d9fc985b1c35fe1c579ef73c067d91 Mon Sep 17 00:00:00 2001 From: selsta Date: Sun, 31 May 2026 02:37:15 +0200 Subject: p2p: make stop signal idempotent --- src/p2p/net_node.h | 1 + src/p2p/net_node.inl | 5 +++++ 2 files changed, 6 insertions(+) (limited to 'src') 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 is_closing; + std::atomic m_stop_signal_sent_once{false}; std::unique_ptr 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 bool node_server::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"); -- cgit v1.2.3