diff --git a/llarp/router/route_poker.cpp b/llarp/router/route_poker.cpp index 119f0773b..af91c90e5 100644 --- a/llarp/router/route_poker.cpp +++ b/llarp/router/route_poker.cpp @@ -12,6 +12,8 @@ namespace llarp void RoutePoker::AddRoute(net::ipv4addr_t ip) { + if (not m_up) + return; bool has_existing = m_PokedRoutes.count(ip); // set up route and apply as needed auto& gw = m_PokedRoutes[ip]; @@ -162,10 +164,7 @@ namespace llarp log::info(logcat, "default gateway changed from {} to {}", *m_CurrentGateway, *next_gw); m_CurrentGateway = next_gw; m_Router->Thaw(); - if (m_Router->HasClientExit()) - Up(); - else - RefreshAllRoutes(); + RefreshAllRoutes(); } else if (m_CurrentGateway) { @@ -196,8 +195,12 @@ namespace llarp void RoutePoker::Up() { - if (IsEnabled() and m_CurrentGateway and not m_up) + bool was_up = m_up; + m_up = true; + if (IsEnabled() and m_CurrentGateway and not was_up) { + log::info(logcat, "RoutePoker coming up; poking routes"); + vpn::IRouteManager& route = m_Router->GetVPNPlatform()->RouteManager(); // black hole all routes if enabled @@ -213,9 +216,8 @@ namespace llarp route.AddDefaultRouteViaInterface(*vpn); log::info(logcat, "route poker up"); } - if (not m_up) + if (not was_up) SetDNSMode(true); - m_up = true; } void diff --git a/llarp/rpc/rpc_server.cpp b/llarp/rpc/rpc_server.cpp index f688dfa46..ecff8c3f3 100644 --- a/llarp/rpc/rpc_server.cpp +++ b/llarp/rpc/rpc_server.cpp @@ -517,7 +517,6 @@ namespace llarp::rpc auto mapExit = [=](service::Address addr) mutable { ep->MapExitRange(range, addr); - r->routePoker()->Up(); bool shouldSendAuth = false; if (token.has_value()) {