diff --git a/llarp/path/transit_hop.cpp b/llarp/path/transit_hop.cpp index f207dd462..6e21bca9d 100644 --- a/llarp/path/transit_hop.cpp +++ b/llarp/path/transit_hop.cpp @@ -173,6 +173,11 @@ namespace llarp m_LastActivity = r->Now(); } FlushDownstream(r); + for(const auto& other : m_FlushOthers) + { + other->FlushUpstream(r); + } + m_FlushOthers.clear(); } else { @@ -410,7 +415,10 @@ namespace llarp buf.cur = buf.base; // send if(path->HandleDownstream(buf, msg.Y, r)) + { + m_FlushOthers.emplace(path); return true; + } return SendRoutingMessage(discarded, r); } diff --git a/llarp/path/transit_hop.hpp b/llarp/path/transit_hop.hpp index 008ec7841..88e2ad432 100644 --- a/llarp/path/transit_hop.hpp +++ b/llarp/path/transit_hop.hpp @@ -222,6 +222,8 @@ namespace llarp void QueueDestroySelf(AbstractRouter* r); + + std::set< HopHandler_ptr, ComparePtr< HopHandler_Ptr > > m_FlushOthers; }; inline std::ostream&