From cb9aa23cc54be17badb32e4450eb7d183f43a6d9 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Fri, 15 Dec 2017 13:25:50 +0000 Subject: [PATCH] levin_protocol_handler_async: another attempt at fixing at exception --- .../include/net/levin_protocol_handler_async.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/contrib/epee/include/net/levin_protocol_handler_async.h b/contrib/epee/include/net/levin_protocol_handler_async.h index c34e31f6f..b35dd60ef 100644 --- a/contrib/epee/include/net/levin_protocol_handler_async.h +++ b/contrib/epee/include/net/levin_protocol_handler_async.h @@ -743,9 +743,18 @@ void async_protocol_handler_config::del_out_connections(si shuffle(out_connections.begin(), out_connections.end(), std::default_random_engine(seed)); while (count > 0 && out_connections.size() > 0) { - close(*out_connections.begin()); - del_connection(m_connects.at(*out_connections.begin())); - out_connections.erase(out_connections.begin()); + try + { + auto i = out_connections.begin(); + async_protocol_handler *conn = m_connects.at(*i); + del_connection(conn); + close(*i); + out_connections.erase(i); + } + catch (const std::out_of_range &e) + { + MWARNING("Connection not found in m_connects, continuing"); + } --count; }