when building paths only use nodes we are directly connected to for first hops.

pull/7/head
Jeff Becker 6 years ago
parent 17ad12cd2c
commit ee54149465

@ -186,7 +186,10 @@ bool
llarp_pathbuilder_context::SelectHop(llarp_nodedb* db, llarp_rc* prev,
llarp_rc* cur, size_t hop)
{
llarp_nodedb_select_random_hop(db, prev, cur, hop);
if(hop == 0)
return router->GetRandomConnectedRouter(cur);
else
llarp_nodedb_select_random_hop(db, prev, cur, hop);
return true;
}

@ -562,6 +562,21 @@ llarp_router::DiscardOutboundFor(const llarp::RouterID &remote)
outboundMesssageQueue.erase(remote);
}
bool
llarp_router::GetRandomConnectedRouter(llarp_rc *result) const
{
auto sz = validRouters.size();
if(sz)
{
auto itr = validRouters.begin();
if(sz > 1)
std::advance(itr, llarp_randint() % sz);
llarp_rc_copy(result, &itr->second);
return true;
}
return false;
}
void
llarp_router::async_verify_RC(llarp_rc *rc, bool isExpectingClient,
llarp_link_establish_job *establish_job)

@ -204,6 +204,9 @@ struct llarp_router
llarp_link *
GetLinkWithSessionByPubkey(const llarp::RouterID &remote);
bool
GetRandomConnectedRouter(llarp_rc *result) const;
void
async_verify_RC(llarp_rc *rc, bool isExpectingClient,
llarp_link_establish_job *job = nullptr);

Loading…
Cancel
Save