|
|
|
@ -375,17 +375,17 @@ namespace llarp
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
Router::ForEachPeer(
|
|
|
|
|
std::function< void(const ILinkSession *, bool) > visit) const
|
|
|
|
|
std::function< void(const ILinkSession *, bool) > visit, bool randomize) const
|
|
|
|
|
{
|
|
|
|
|
for(const auto &link : outboundLinks)
|
|
|
|
|
{
|
|
|
|
|
link->ForEachSession(
|
|
|
|
|
[visit](const ILinkSession *peer) { visit(peer, true); });
|
|
|
|
|
[visit](const ILinkSession *peer) { visit(peer, true); }, randomize);
|
|
|
|
|
}
|
|
|
|
|
for(const auto &link : inboundLinks)
|
|
|
|
|
{
|
|
|
|
|
link->ForEachSession(
|
|
|
|
|
[visit](const ILinkSession *peer) { visit(peer, false); });
|
|
|
|
|
[visit](const ILinkSession *peer) { visit(peer, false); }, randomize);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1044,6 +1044,17 @@ namespace llarp
|
|
|
|
|
ep->LookupRouterAnon(remote);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool
|
|
|
|
|
Router::IsBootstrapNode(RouterID r) const
|
|
|
|
|
{
|
|
|
|
|
for(const auto & rc : bootstrapRCList)
|
|
|
|
|
{
|
|
|
|
|
if(rc.pubkey == r)
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
Router::Tick()
|
|
|
|
|
{
|
|
|
|
@ -1132,11 +1143,14 @@ namespace llarp
|
|
|
|
|
else
|
|
|
|
|
LogError("we have no bootstrap nodes specified");
|
|
|
|
|
}
|
|
|
|
|
if(connected < minConnectedRouters)
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
size_t dlt = minConnectedRouters - connected;
|
|
|
|
|
LogInfo("connecting to ", dlt, " random routers to keep alive");
|
|
|
|
|
ConnectToRandomRouters(dlt);
|
|
|
|
|
if(connected < minConnectedRouters)
|
|
|
|
|
{
|
|
|
|
|
size_t dlt = minConnectedRouters - connected;
|
|
|
|
|
LogInfo("connecting to ", dlt, " random routers to keep alive");
|
|
|
|
|
ConnectToRandomRouters(dlt);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!IsServiceNode())
|
|
|
|
@ -1478,9 +1492,11 @@ namespace llarp
|
|
|
|
|
LogInfo("initalized service node: ", us);
|
|
|
|
|
if(minConnectedRouters < 6)
|
|
|
|
|
minConnectedRouters = 6;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
maxConnectedRouters = minConnectedRouters + 1;
|
|
|
|
|
// we are a client
|
|
|
|
|
// regenerate keys and resign rc before everything else
|
|
|
|
|
crypto()->identity_keygen(_identity);
|
|
|
|
@ -1660,6 +1676,11 @@ namespace llarp
|
|
|
|
|
&& !(self->HasSessionTo(other.pubkey)
|
|
|
|
|
|| self->HasPendingConnectJob(other.pubkey)))
|
|
|
|
|
{
|
|
|
|
|
for(const auto & rc : self->bootstrapRCList)
|
|
|
|
|
{
|
|
|
|
|
if(rc.pubkey == other.pubkey)
|
|
|
|
|
return want > 0;
|
|
|
|
|
}
|
|
|
|
|
self->TryConnectAsync(other, 5);
|
|
|
|
|
--want;
|
|
|
|
|
}
|
|
|
|
|