From 861d573e6aab1ed73c58f4eef1b5d0283d8e12bb Mon Sep 17 00:00:00 2001 From: dr7ana Date: Wed, 31 Jan 2024 14:27:41 -0800 Subject: [PATCH] Clear application map connection entry earlier --- llarp/link/connection.hpp | 5 ----- llarp/link/link_manager.cpp | 8 +++++++- llarp/link/link_manager.hpp | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/llarp/link/connection.hpp b/llarp/link/connection.hpp index 91db26d83..5f0406992 100644 --- a/llarp/link/connection.hpp +++ b/llarp/link/connection.hpp @@ -26,8 +26,3 @@ namespace llarp::link bool is_relay = true); }; } // namespace llarp::link - -/* - TODO: - - make control_stream a weak pointer? -*/ diff --git a/llarp/link/link_manager.cpp b/llarp/link/link_manager.cpp index a19d75f50..c3a3501e0 100644 --- a/llarp/link/link_manager.cpp +++ b/llarp/link/link_manager.cpp @@ -285,7 +285,10 @@ namespace llarp auto defer_to_incoming = other < router().local_rid(); if (defer_to_incoming) + { itr->second->conn->set_close_quietly(); + itr->second = nullptr; + } log::critical( logcat, @@ -351,7 +354,7 @@ namespace llarp if (auto it = ep.service_conns.find(rid); it != ep.service_conns.end()) { log::critical(logcat, "Configuring inbound connection from relay RID:{}", rid); - + it->second = std::make_shared(ci.shared_from_this(), make_control(ci, rid)); } else if (auto it = ep.client_conns.find(rid); it != ep.client_conns.end()) @@ -464,10 +467,13 @@ namespace llarp if (auto conn = ep.get_conn(remote); conn) { + log::critical(logcat, "Dispatching {} request to remote:{}", endpoint, remote); conn->control_stream->command(std::move(endpoint), std::move(body), std::move(func)); return true; } + log::critical(logcat, "Queueing message to "); + _router.loop()->call([this, remote, endpoint = std::move(endpoint), diff --git a/llarp/link/link_manager.hpp b/llarp/link/link_manager.hpp index c8272c46b..d0e164636 100644 --- a/llarp/link/link_manager.hpp +++ b/llarp/link/link_manager.hpp @@ -157,7 +157,7 @@ namespace llarp friend struct link::Endpoint; - std::atomic is_stopping; + std::atomic is_stopping{false}; // sessions to persist -> timestamp to end persist at std::unordered_map persisting_conns;