Browse Source

check for non-expired leases

pull/102/head
orignal 10 years ago
parent
commit
3a3137f06b
  1. 22
      I2PTunnel.cpp

22
I2PTunnel.cpp

@ -187,26 +187,32 @@ namespace stream
{ {
if (!ecode) if (!ecode)
{ {
if (!m_RemoteLeaseSet) if (!m_DestinationIdentHash)
{ {
// try to get it i2p::data::IdentHash identHash;
if (i2p::data::netdb.GetAddressBook ().GetIdentHash (m_Destination, identHash))
m_DestinationIdentHash = new i2p::data::IdentHash (identHash);
}
if (m_DestinationIdentHash) if (m_DestinationIdentHash)
{
// try to get a LeaseSet
m_RemoteLeaseSet = GetLocalDestination ()->FindLeaseSet (*m_DestinationIdentHash); m_RemoteLeaseSet = GetLocalDestination ()->FindLeaseSet (*m_DestinationIdentHash);
if (m_RemoteLeaseSet && m_RemoteLeaseSet->HasNonExpiredLeases ())
CreateConnection (socket);
else else
{ {
i2p::data::IdentHash identHash;
if (i2p::data::netdb.GetAddressBook ().GetIdentHash (m_Destination, identHash))
{
m_DestinationIdentHash = new i2p::data::IdentHash (identHash);
i2p::data::netdb.RequestDestination (*m_DestinationIdentHash, GetLocalDestination ()->GetTunnelPool ()); i2p::data::netdb.RequestDestination (*m_DestinationIdentHash, GetLocalDestination ()->GetTunnelPool ());
m_Timer.expires_from_now (boost::posix_time::seconds (I2P_TUNNEL_DESTINATION_REQUEST_TIMEOUT)); m_Timer.expires_from_now (boost::posix_time::seconds (I2P_TUNNEL_DESTINATION_REQUEST_TIMEOUT));
m_Timer.async_wait (boost::bind (&I2PClientTunnel::HandleDestinationRequestTimer, m_Timer.async_wait (boost::bind (&I2PClientTunnel::HandleDestinationRequestTimer,
this, boost::asio::placeholders::error, socket)); this, boost::asio::placeholders::error, socket));
} }
} }
}
else else
CreateConnection (socket); {
LogPrint ("Remote destination ", m_Destination, " not found");
delete socket;
}
Accept (); Accept ();
} }
else else

Loading…
Cancel
Save