From a7a4505b79a52f41bac8a0d8db57c30c9a469bd7 Mon Sep 17 00:00:00 2001 From: cryptozoidberg Date: Wed, 16 Apr 2025 15:27:44 +0400 Subject: [PATCH] attempt to fix seg fault on foreach_connection --- contrib/epee/include/net/levin_protocol_handler_async.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contrib/epee/include/net/levin_protocol_handler_async.h b/contrib/epee/include/net/levin_protocol_handler_async.h index 5e0c7a1a..c0c94c44 100644 --- a/contrib/epee/include/net/levin_protocol_handler_async.h +++ b/contrib/epee/include/net/levin_protocol_handler_async.h @@ -817,7 +817,9 @@ template template bool async_protocol_handler_config::foreach_connection(callback_t cb) { CRITICAL_REGION_LOCAL(m_connects_lock); - for(auto& c: m_connects) + //in case any of the cb() leads to erasing items from m_connects, let's go over local copy of it + auto connects_local = m_connects; + for(auto& c: connects_local) { async_protocol_handler* aph = c.second; if(!cb(aph->get_context_ref()))