From c61ed150b77b24cbd5afc14bf84fe7e485475f31 Mon Sep 17 00:00:00 2001 From: orignal Date: Thu, 8 Jan 2015 22:04:41 -0500 Subject: [PATCH] check for pending LeaseSet request --- Destination.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/Destination.cpp b/Destination.cpp index 77cae1d0..bee54062 100644 --- a/Destination.cpp +++ b/Destination.cpp @@ -464,14 +464,24 @@ namespace client { LeaseSetRequest * request = new LeaseSetRequest (m_Service); request->requestComplete = requestComplete; - m_LeaseSetRequests[dest] = request; - if (!SendLeaseSetRequest (dest, floodfill, request)) + auto ret = m_LeaseSetRequests.insert (std::pair(dest,request)); + if (ret.second) // inserted { - // request failed + if (!SendLeaseSetRequest (dest, floodfill, request)) + { + // request failed + if (request->requestComplete) request->requestComplete (false); + delete request; + m_LeaseSetRequests.erase (dest); + } + } + else // duplicate + { + LogPrint (eLogError, "Request of ", dest.ToBase64 (), " is pending already"); + // TODO: queue up requests if (request->requestComplete) request->requestComplete (false); delete request; - m_LeaseSetRequests.erase (dest); - } + } } else LogPrint (eLogError, "No floodfills found");