|
|
@ -763,9 +763,17 @@ namespace client |
|
|
|
request->requestTime = ts; |
|
|
|
request->requestTime = ts; |
|
|
|
if (!SendLeaseSetRequest (dest, floodfill, request)) |
|
|
|
if (!SendLeaseSetRequest (dest, floodfill, request)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// request failed
|
|
|
|
// try another
|
|
|
|
m_LeaseSetRequests.erase (ret.first); |
|
|
|
LogPrint (eLogWarning, "Destination: Couldn't send LeaseSet request to ", floodfill->GetIdentHash ().ToBase64 (), ". Trying another"); |
|
|
|
if (requestComplete) requestComplete (nullptr); |
|
|
|
request->excluded.insert (floodfill->GetIdentHash ()); |
|
|
|
|
|
|
|
floodfill = i2p::data::netdb.GetClosestFloodfill (dest, request->excluded); |
|
|
|
|
|
|
|
if (!SendLeaseSetRequest (dest, floodfill, request)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// request failed
|
|
|
|
|
|
|
|
LogPrint (eLogWarning, "Destination: LeaseSet request for ", dest.ToBase32 (), " was not sent"); |
|
|
|
|
|
|
|
m_LeaseSetRequests.erase (ret.first); |
|
|
|
|
|
|
|
if (requestComplete) requestComplete (nullptr); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
else // duplicate
|
|
|
|
else // duplicate
|
|
|
@ -792,11 +800,11 @@ namespace client |
|
|
|
std::shared_ptr<const i2p::data::RouterInfo> nextFloodfill, std::shared_ptr<LeaseSetRequest> request) |
|
|
|
std::shared_ptr<const i2p::data::RouterInfo> nextFloodfill, std::shared_ptr<LeaseSetRequest> request) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (!request->replyTunnel || !request->replyTunnel->IsEstablished ()) |
|
|
|
if (!request->replyTunnel || !request->replyTunnel->IsEstablished ()) |
|
|
|
request->replyTunnel = m_Pool->GetNextInboundTunnel (nullptr, nextFloodfill->GetCompatibleTransports (true)); |
|
|
|
request->replyTunnel = m_Pool->GetNextInboundTunnel (nullptr, nextFloodfill->GetCompatibleTransports (false)); // outbound from floodfill
|
|
|
|
if (!request->replyTunnel) LogPrint (eLogError, "Destination: Can't send LeaseSet request, no inbound tunnels found"); |
|
|
|
if (!request->replyTunnel) LogPrint (eLogWarning, "Destination: Can't send LeaseSet request, no compatible inbound tunnels found"); |
|
|
|
if (!request->outboundTunnel || !request->outboundTunnel->IsEstablished ()) |
|
|
|
if (!request->outboundTunnel || !request->outboundTunnel->IsEstablished ()) |
|
|
|
request->outboundTunnel = m_Pool->GetNextOutboundTunnel (nullptr, nextFloodfill->GetCompatibleTransports (false)); |
|
|
|
request->outboundTunnel = m_Pool->GetNextOutboundTunnel (nullptr, nextFloodfill->GetCompatibleTransports (true)); // inbound from floodfill
|
|
|
|
if (!request->outboundTunnel) LogPrint (eLogError, "Destination: Can't send LeaseSet request, no outbound tunnels found"); |
|
|
|
if (!request->outboundTunnel) LogPrint (eLogWarning, "Destination: Can't send LeaseSet request, no compatible outbound tunnels found"); |
|
|
|
|
|
|
|
|
|
|
|
if (request->replyTunnel && request->outboundTunnel) |
|
|
|
if (request->replyTunnel && request->outboundTunnel) |
|
|
|
{ |
|
|
|
{ |
|
|
|