mirror of
https://github.com/PurpleI2P/i2pd
synced 2024-11-10 00:00:29 +03:00
exploratory if tunnels are not created yet
This commit is contained in:
parent
9ecf2500f5
commit
d6b97670c4
@ -238,7 +238,7 @@ namespace util
|
||||
void HTTPConnection::FillContent (std::stringstream& s)
|
||||
{
|
||||
s << "Data path: " << i2p::util::filesystem::GetDataDir().string() << "<BR>" << "<BR>";
|
||||
s << "Our external address:" << "<BR>" << "<BR>";
|
||||
s << "Our external address:" << "<BR>";
|
||||
for (auto& address : i2p::context.GetRouterInfo().GetAddresses())
|
||||
{
|
||||
switch (address.transportStyle)
|
||||
@ -254,6 +254,9 @@ namespace util
|
||||
}
|
||||
s << address.host.to_string() << ":" << address.port << "<BR>";
|
||||
}
|
||||
s << "<BR>Routers: " << i2p::data::netdb.GetNumRouters () << " ";
|
||||
s << "Floodfills: " << i2p::data::netdb.GetNumFloodfills () << " ";
|
||||
s << "LeaseSets: " << i2p::data::netdb.GetNumLeaseSets () << "<BR>";
|
||||
|
||||
s << "<P>Tunnels</P>";
|
||||
for (auto it: i2p::tunnel::tunnels.GetOutboundTunnels ())
|
||||
|
32
NetDb.cpp
32
NetDb.cpp
@ -534,20 +534,20 @@ namespace data
|
||||
|
||||
void NetDb::Explore ()
|
||||
{
|
||||
auto exploratoryPool = i2p::tunnel::tunnels.GetExploratoryPool ();
|
||||
auto outbound = exploratoryPool ? exploratoryPool->GetNextOutboundTunnel () : nullptr;
|
||||
auto inbound = exploratoryPool ? exploratoryPool->GetNextInboundTunnel () : nullptr;
|
||||
if (outbound && inbound)
|
||||
CryptoPP::RandomNumberGenerator& rnd = i2p::context.GetRandomNumberGenerator ();
|
||||
uint8_t randomHash[32];
|
||||
rnd.GenerateBlock (randomHash, 32);
|
||||
RequestedDestination * dest = CreateRequestedDestination (IdentHash (randomHash), false, true);
|
||||
auto floodfill = GetClosestFloodfill (randomHash, dest->GetExcludedPeers ());
|
||||
if (floodfill)
|
||||
{
|
||||
CryptoPP::RandomNumberGenerator& rnd = i2p::context.GetRandomNumberGenerator ();
|
||||
uint8_t randomHash[32];
|
||||
rnd.GenerateBlock (randomHash, 32);
|
||||
RequestedDestination * dest = CreateRequestedDestination (IdentHash (randomHash), false, true);
|
||||
dest->SetLastOutboundTunnel (outbound);
|
||||
auto floodfill = GetClosestFloodfill (randomHash, dest->GetExcludedPeers ());
|
||||
if (floodfill)
|
||||
LogPrint ("Exploring new routers ...");
|
||||
auto exploratoryPool = i2p::tunnel::tunnels.GetExploratoryPool ();
|
||||
auto outbound = exploratoryPool ? exploratoryPool->GetNextOutboundTunnel () : nullptr;
|
||||
auto inbound = exploratoryPool ? exploratoryPool->GetNextInboundTunnel () : nullptr;
|
||||
if (outbound && inbound)
|
||||
{
|
||||
LogPrint ("Exploring new routers ...");
|
||||
dest->SetLastOutboundTunnel (outbound);
|
||||
std::vector<i2p::tunnel::TunnelMessageBlock> msgs;
|
||||
msgs.push_back (i2p::tunnel::TunnelMessageBlock
|
||||
{
|
||||
@ -564,8 +564,14 @@ namespace data
|
||||
outbound->SendTunnelDataMsg (msgs);
|
||||
}
|
||||
else
|
||||
DeleteRequestedDestination (dest);
|
||||
{
|
||||
dest->SetLastOutboundTunnel (nullptr);
|
||||
dest->SetLastReplyTunnel (nullptr);
|
||||
i2p::transports.SendMessage (floodfill->GetIdentHash (), dest->CreateRequestMessage (floodfill->GetIdentHash ()));
|
||||
}
|
||||
}
|
||||
else
|
||||
DeleteRequestedDestination (dest);
|
||||
}
|
||||
|
||||
void NetDb::Publish ()
|
||||
|
6
NetDb.h
6
NetDb.h
@ -33,6 +33,7 @@ namespace data
|
||||
void ClearExcludedPeers ();
|
||||
const RouterInfo * GetLastRouter () const { return m_LastRouter; };
|
||||
const i2p::tunnel::InboundTunnel * GetLastReplyTunnel () const { return m_LastReplyTunnel; };
|
||||
void SetLastReplyTunnel (i2p::tunnel::InboundTunnel * tunnel) { m_LastReplyTunnel = tunnel; };
|
||||
bool IsExploratory () const { return m_IsExploratory; };
|
||||
bool IsLeaseSet () const { return m_IsLeaseSet; };
|
||||
bool IsExcluded (const IdentHash& ident) const { return m_ExcludedPeers.count (ident); };
|
||||
@ -79,6 +80,11 @@ namespace data
|
||||
|
||||
void PostI2NPMsg (I2NPMessage * msg);
|
||||
|
||||
// for web interface
|
||||
int GetNumRouters () const { return m_RouterInfos.size (); };
|
||||
int GetNumFloodfills () const { return m_Floodfills.size (); };
|
||||
int GetNumLeaseSets () const { return m_LeaseSets.size (); };
|
||||
|
||||
private:
|
||||
|
||||
bool CreateNetDb(boost::filesystem::path directory);
|
||||
|
Loading…
Reference in New Issue
Block a user