From 6ae5f20ec1100eac40bbc34f55f7a09febecbb38 Mon Sep 17 00:00:00 2001 From: anonimal Date: Tue, 13 Oct 2015 20:26:32 +0000 Subject: [PATCH] Catch exception in SSUServer that would dump core. --- core/RouterInfo.cpp | 2 +- core/transport/SSU.cpp | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/core/RouterInfo.cpp b/core/RouterInfo.cpp index 2e2b063e..347c8ddb 100644 --- a/core/RouterInfo.cpp +++ b/core/RouterInfo.cpp @@ -426,7 +426,7 @@ namespace data void RouterInfo::CreateBuffer (const PrivateKeys& privateKeys) { - m_Timestamp = i2p::util::GetMillisecondsSinceEpoch (); // refresh timstamp + m_Timestamp = i2p::util::GetMillisecondsSinceEpoch (); // refresh timestamp std::stringstream s; uint8_t ident[1024]; auto identLen = privateKeys.GetPublic ().ToBuffer (ident, 1024); diff --git a/core/transport/SSU.cpp b/core/transport/SSU.cpp index 2b658e27..415bc01c 100644 --- a/core/transport/SSU.cpp +++ b/core/transport/SSU.cpp @@ -136,11 +136,19 @@ namespace transport void SSUServer::Send (const uint8_t * buf, size_t len, const boost::asio::ip::udp::endpoint& to) { - if (to.protocol () == boost::asio::ip::udp::v4()) - m_Socket.send_to (boost::asio::buffer (buf, len), to); + if (to.protocol () == boost::asio::ip::udp::v4()) + try { + m_Socket.send_to (boost::asio::buffer (buf, len), to); + } catch (const std::exception& ex) { + LogPrint (eLogError, "SSUServer send error: ", ex.what()); + } else - m_SocketV6.send_to (boost::asio::buffer (buf, len), to); - } + try { + m_SocketV6.send_to (boost::asio::buffer (buf, len), to); + } catch (const std::exception& ex) { + LogPrint (eLogError, "SSUServer V6 send error: ", ex.what()); + } + } void SSUServer::Receive () {