diff --git a/contrib/epee/include/net/abstract_tcp_server2.inl b/contrib/epee/include/net/abstract_tcp_server2.inl index bdb70d9df..2317a6d01 100644 --- a/contrib/epee/include/net/abstract_tcp_server2.inl +++ b/contrib/epee/include/net/abstract_tcp_server2.inl @@ -1221,16 +1221,13 @@ namespace net_utils template bool connection::add_ref() { - try { - auto self = connection::shared_from_this(); - std::lock_guard guard(m_state.lock); - this->self = std::move(self); - ++m_state.protocol.reference_counter; - return true; - } - catch (boost::bad_weak_ptr &exception) { + auto self = connection::weak_from_this().lock(); + if (!self) return false; - } + std::lock_guard guard(m_state.lock); + this->self = std::move(self); + ++m_state.protocol.reference_counter; + return true; } template