don't connect to explored routers

pull/90/head
Jeff Becker 6 years ago
parent ae1a81a767
commit 10c2d1552d
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -77,9 +77,8 @@ namespace llarp
llarp::LogInfo("got ", valuesFound.size(), " routers from exploration");
for(const auto &pk : valuesFound)
{
// try connecting to it we don't know it
// this triggers a dht lookup
parent->router->TryEstablishTo(pk);
// lookup router
parent->LookupRouter(pk, std::bind(&llarp_router::HandleDHTLookupForExplore, parent->router, pk, std::placeholders::_1));
}
}
};

@ -438,6 +438,24 @@ llarp_router::ConnectionToRouterAllowed(const llarp::RouterID & router) const
return true;
}
void
llarp_router::HandleDHTLookupForExplore(llarp::RouterID remote, const std::vector< llarp::RouterContact > &results)
{
if(results.size() == 0)
return;
for(const auto & rc: results)
{
if(rc.Verify(&crypto))
llarp_nodedb_put_rc(nodedb, rc);
else
return;
}
if(ConnectionToRouterAllowed(remote))
{
TryEstablishTo(remote);
}
}
void
llarp_router::TryEstablishTo(const llarp::RouterID &remote)
{

@ -213,6 +213,8 @@ struct llarp_router
void
PersistSessionUntil(const llarp::RouterID &remote, llarp_time_t until);
bool
EnsureIdentity();
@ -269,6 +271,9 @@ struct llarp_router
void
TryEstablishTo(const llarp::RouterID &remote);
void
HandleDHTLookupForExplore(llarp::RouterID remote, const std::vector< llarp::RouterContact > &results);
void
ForEachPeer(
std::function< void(const llarp::ILinkSession *, bool) > visit) const;

Loading…
Cancel
Save