|
|
@ -399,7 +399,7 @@ namespace tunnel
|
|
|
|
std::unique_lock<std::mutex> l(m_TestsMutex);
|
|
|
|
std::unique_lock<std::mutex> l(m_TestsMutex);
|
|
|
|
m_Tests[msgID] = it;
|
|
|
|
m_Tests[msgID] = it;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
auto msg = CreateTunnelTestMsg (msgID);
|
|
|
|
auto msg = encrypt ? CreateTunnelTestMsg (msgID) : CreateDeliveryStatusMsg (msgID);
|
|
|
|
auto outbound = it.first;
|
|
|
|
auto outbound = it.first;
|
|
|
|
auto s = shared_from_this ();
|
|
|
|
auto s = shared_from_this ();
|
|
|
|
msg->onDrop = [msgID, outbound, s]()
|
|
|
|
msg->onDrop = [msgID, outbound, s]()
|
|
|
@ -452,11 +452,14 @@ namespace tunnel
|
|
|
|
buf += 4;
|
|
|
|
buf += 4;
|
|
|
|
uint64_t timestamp = bufbe64toh (buf);
|
|
|
|
uint64_t timestamp = bufbe64toh (buf);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!ProcessTunnelTest (msgID, timestamp)) // if non encrypted
|
|
|
|
|
|
|
|
{
|
|
|
|
if (m_LocalDestination)
|
|
|
|
if (m_LocalDestination)
|
|
|
|
m_LocalDestination->ProcessDeliveryStatusMessage (msg);
|
|
|
|
m_LocalDestination->ProcessDeliveryStatusMessage (msg);
|
|
|
|
else
|
|
|
|
else
|
|
|
|
LogPrint (eLogWarning, "Tunnels: Local destination doesn't exist, dropped");
|
|
|
|
LogPrint (eLogWarning, "Tunnels: Local destination doesn't exist, dropped");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void TunnelPool::ProcessTunnelTest (std::shared_ptr<I2NPMessage> msg)
|
|
|
|
void TunnelPool::ProcessTunnelTest (std::shared_ptr<I2NPMessage> msg)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -832,7 +835,7 @@ namespace tunnel
|
|
|
|
{
|
|
|
|
{
|
|
|
|
std::shared_ptr<InboundTunnel> tun = nullptr;
|
|
|
|
std::shared_ptr<InboundTunnel> tun = nullptr;
|
|
|
|
std::unique_lock<std::mutex> lock(m_InboundTunnelsMutex);
|
|
|
|
std::unique_lock<std::mutex> lock(m_InboundTunnelsMutex);
|
|
|
|
uint64_t min = 1000000;
|
|
|
|
int min = 1000000;
|
|
|
|
for (const auto & itr : m_InboundTunnels) {
|
|
|
|
for (const auto & itr : m_InboundTunnels) {
|
|
|
|
if(!itr->LatencyIsKnown()) continue;
|
|
|
|
if(!itr->LatencyIsKnown()) continue;
|
|
|
|
auto l = itr->GetMeanLatency();
|
|
|
|
auto l = itr->GetMeanLatency();
|
|
|
@ -848,7 +851,7 @@ namespace tunnel
|
|
|
|
{
|
|
|
|
{
|
|
|
|
std::shared_ptr<OutboundTunnel> tun = nullptr;
|
|
|
|
std::shared_ptr<OutboundTunnel> tun = nullptr;
|
|
|
|
std::unique_lock<std::mutex> lock(m_OutboundTunnelsMutex);
|
|
|
|
std::unique_lock<std::mutex> lock(m_OutboundTunnelsMutex);
|
|
|
|
uint64_t min = 1000000;
|
|
|
|
int min = 1000000;
|
|
|
|
for (const auto & itr : m_OutboundTunnels) {
|
|
|
|
for (const auto & itr : m_OutboundTunnels) {
|
|
|
|
if(!itr->LatencyIsKnown()) continue;
|
|
|
|
if(!itr->LatencyIsKnown()) continue;
|
|
|
|
auto l = itr->GetMeanLatency();
|
|
|
|
auto l = itr->GetMeanLatency();
|
|
|
|