From 5d2f9f9f0b075859f2adc1034b98b8c5869bf90f Mon Sep 17 00:00:00 2001 From: orignal Date: Tue, 14 Apr 2015 10:40:46 -0400 Subject: [PATCH] fixed potential memory leak --- Transports.cpp | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/Transports.cpp b/Transports.cpp index 104df4a8..3270c174 100644 --- a/Transports.cpp +++ b/Transports.cpp @@ -227,10 +227,19 @@ namespace transport auto it = m_Peers.find (ident); if (it == m_Peers.end ()) { - auto r = netdb.FindRouter (ident); - it = m_Peers.insert (std::pair(ident, { 0, r, nullptr, - i2p::util::GetSecondsSinceEpoch () })).first; - if (!ConnectToPeer (ident, it->second)) + bool connected = false; + try + { + auto r = netdb.FindRouter (ident); + it = m_Peers.insert (std::pair(ident, { 0, r, nullptr, + i2p::util::GetSecondsSinceEpoch () })).first; + connected= ConnectToPeer (ident, it->second); + } + catch (std::exception& ex) + { + LogPrint (eLogError, "Transports::PostMessage ", ex.what ()); + } + if (!connected) { DeleteI2NPMessage (msg); return; @@ -254,10 +263,19 @@ namespace transport auto it = m_Peers.find (ident); if (it == m_Peers.end ()) { - auto r = netdb.FindRouter (ident); - it = m_Peers.insert (std::pair(ident, { 0, r, nullptr, - i2p::util::GetSecondsSinceEpoch () })).first; - if (!ConnectToPeer (ident, it->second)) + bool connected = false; + try + { + auto r = netdb.FindRouter (ident); + it = m_Peers.insert (std::pair(ident, { 0, r, nullptr, + i2p::util::GetSecondsSinceEpoch () })).first; + connected = ConnectToPeer (ident, it->second); + } + catch (std::exception& ex) + { + LogPrint (eLogError, "Transports::PostMessages ", ex.what ()); + } + if (!connected) { for (auto it1: msgs) DeleteI2NPMessage (it1);