Browse Source

better exploratory

pull/8/head
orignal 11 years ago
parent
commit
ca51567eba
  1. 20
      NetDb.cpp
  2. 3
      NetDb.h

20
NetDb.cpp

@ -270,8 +270,8 @@ namespace data @@ -270,8 +270,8 @@ namespace data
if (num > 0)
{
bool isExploratory = !memcmp (m_Exploratory, buf, 32) && m_LastFloodfill;
i2p::tunnel::OutboundTunnel * outbound = i2p::tunnel::tunnels.GetNextOutboundTunnel ();
i2p::tunnel::InboundTunnel * inbound = i2p::tunnel::tunnels.GetNextInboundTunnel ();
i2p::tunnel::OutboundTunnel * outbound = isExploratory ? m_LastOutboundTunnel : i2p::tunnel::tunnels.GetNextOutboundTunnel ();
i2p::tunnel::InboundTunnel * inbound = isExploratory ? m_LastInboundTunnel : i2p::tunnel::tunnels.GetNextInboundTunnel ();
for (int i = 0; i < num; i++)
{
@ -327,9 +327,9 @@ namespace data @@ -327,9 +327,9 @@ namespace data
void NetDb::Explore ()
{
i2p::tunnel::OutboundTunnel * outbound = i2p::tunnel::tunnels.GetNextOutboundTunnel ();
i2p::tunnel::InboundTunnel * inbound = i2p::tunnel::tunnels.GetNextInboundTunnel ();
if (outbound && inbound)
m_LastOutboundTunnel = i2p::tunnel::tunnels.GetNextOutboundTunnel ();
m_LastInboundTunnel = i2p::tunnel::tunnels.GetNextInboundTunnel ();
if (m_LastOutboundTunnel && m_LastInboundTunnel)
{
m_LastFloodfill = GetRandomNTCPRouter (true);
if (m_LastFloodfill)
@ -337,9 +337,13 @@ namespace data @@ -337,9 +337,13 @@ namespace data
LogPrint ("Exploring new routers ...");
CryptoPP::RandomNumberGenerator& rnd = i2p::context.GetRandomNumberGenerator ();
rnd.GenerateBlock (m_Exploratory, 32);
I2NPMessage * msg = i2p::CreateDatabaseLookupMsg (m_Exploratory, inbound->GetNextIdentHash (),
inbound->GetNextTunnelID (), true);
outbound->SendTunnelDataMsg (m_LastFloodfill->GetIdentHash (), 0, msg);
m_LastOutboundTunnel->GetTunnelGateway ().PutTunnelDataMsg (m_LastFloodfill->GetIdentHash (), 0,
CreateDatabaseStoreMsg ()); // tell floodfill about us
m_LastOutboundTunnel->GetTunnelGateway ().PutTunnelDataMsg (m_LastFloodfill->GetIdentHash (), 0,
i2p::CreateDatabaseLookupMsg (m_Exploratory, m_LastInboundTunnel->GetNextIdentHash (),
m_LastInboundTunnel->GetNextTunnelID (), true)); // explore
m_LastOutboundTunnel->GetTunnelGateway ().SendBuffer ();
}
}
}

3
NetDb.h

@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
#include "I2NPProtocol.h"
#include "RouterInfo.h"
#include "LeaseSet.h"
#include "Tunnel.h"
namespace i2p
{
@ -57,6 +58,8 @@ namespace data @@ -57,6 +58,8 @@ namespace data
std::thread * m_Thread;
uint8_t m_Exploratory[32];
const RouterInfo * m_LastFloodfill;
i2p::tunnel::OutboundTunnel * m_LastOutboundTunnel;
i2p::tunnel::InboundTunnel * m_LastInboundTunnel;
i2p::util::Queue<I2NPMessage> m_Queue; // of I2NPDatabaseStoreMsg
};

Loading…
Cancel
Save