From 964e27bc1507586fa0c531e8d9af8984d9b41ba5 Mon Sep 17 00:00:00 2001 From: orignal Date: Mon, 29 Sep 2014 20:08:26 -0400 Subject: [PATCH] don't handle same message twice --- SSUData.cpp | 14 +++++++++++++- SSUData.h | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/SSUData.cpp b/SSUData.cpp index 62ffba61..377c8fbb 100644 --- a/SSUData.cpp +++ b/SSUData.cpp @@ -221,7 +221,19 @@ namespace ssu SendMsgAck (msgID); msg->FromSSU (msgID); if (m_Session.GetState () == eSessionStateEstablished) - i2p::HandleI2NPMessage (msg); + { + if (!m_ReceivedMessages.count (msgID)) + { + if (m_ReceivedMessages.size () > 100) m_ReceivedMessages.clear (); + m_ReceivedMessages.insert (msgID); + i2p::HandleI2NPMessage (msg); + } + else + { + LogPrint ("SSU message ", msgID, " already received"); + i2p::DeleteI2NPMessage (msg); + } + } else { // we expect DeliveryStatus diff --git a/SSUData.h b/SSUData.h index afa36f8d..9ac431a2 100644 --- a/SSUData.h +++ b/SSUData.h @@ -100,6 +100,7 @@ namespace ssu SSUSession& m_Session; std::map m_IncomleteMessages; std::map m_SentMessages; + std::set m_ReceivedMessages; boost::asio::deadline_timer m_ResendTimer; int m_PacketSize; };