From 5188873288dda31c5979f20ad1e6c438a914160d Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Thu, 28 Nov 2019 19:34:31 -0500 Subject: [PATCH] batch and flush --- llarp/handlers/tun.cpp | 5 +++-- llarp/path/transit_hop.cpp | 14 +++++++++++--- llarp/path/transit_hop.hpp | 3 +++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/llarp/handlers/tun.cpp b/llarp/handlers/tun.cpp index 94b0d007a..51acaf020 100644 --- a/llarp/handlers/tun.cpp +++ b/llarp/handlers/tun.cpp @@ -708,7 +708,7 @@ namespace llarp llarp::LogInfo(Name(), " allocated up to ", m_MaxIP, " on range ", m_OurRange); - MapAddress(m_Identity.pub.Addr(), m_OurIP, IsSNode()); + MapAddress(m_Identity.pub.Addr(), GetIfAddr(), IsSNode()); if(m_OnUp) { m_OnUp->NotifyAsync(NotifyParams()); @@ -717,7 +717,8 @@ namespace llarp { vpnif->injected(vpnif, true); } - return true; + auto itr = m_IPToAddr.find(GetIFAddr()); + return itr != m_IPToAddr.end() && itr->second == m_Identity.pub.Addr(); } std::unordered_map< std::string, std::string > diff --git a/llarp/path/transit_hop.cpp b/llarp/path/transit_hop.cpp index c5a86f33f..d9d5f6b37 100644 --- a/llarp/path/transit_hop.cpp +++ b/llarp/path/transit_hop.cpp @@ -150,7 +150,8 @@ namespace llarp { LogicCall(r->logic(), flushIt); } - m_DownstreamGather.pushBack(msg); + if(not m_DownstreamGather.disabled()) + m_DownstreamGather.pushBack(msg); } m_DownstreamWorkCounter--; if(m_DownstreamWorkCounter == 0) @@ -184,7 +185,8 @@ namespace llarp { LogicCall(r->logic(), flushIt); } - m_UpstreamGather.pushBack(msg); + if(not m_UpstreamGather.disabled()) + m_UpstreamGather.pushBack(msg); } m_UpstreamWorkCounter--; if(m_UpstreamWorkCounter == 0) @@ -463,10 +465,16 @@ namespace llarp printer.printAttribute("TransitHop", info); printer.printAttribute("started", started); printer.printAttribute("lifetime", lifetime); - return stream; } + void + TransitHop::Stop() + { + m_UpstreamGather.disable(); + m_DownstreamGather.disable(); + } + void TransitHop::SetSelfDestruct() { diff --git a/llarp/path/transit_hop.hpp b/llarp/path/transit_hop.hpp index 1627bb24c..fb7ecde58 100644 --- a/llarp/path/transit_hop.hpp +++ b/llarp/path/transit_hop.hpp @@ -95,6 +95,9 @@ namespace llarp llarp_proto_version_t version; llarp_time_t m_LastActivity = 0; + void + Stop(); + bool destroy = false; bool