diff --git a/llarp/link/link_manager.cpp b/llarp/link/link_manager.cpp index e9070533a..589d352a2 100644 --- a/llarp/link/link_manager.cpp +++ b/llarp/link/link_manager.cpp @@ -160,16 +160,12 @@ namespace llarp [this, msg = std::move(m)]() mutable { handle_gossip_rc(std::move(msg)); }); }); - for (auto& method : direct_requests) + for (auto& [method, callback] : direct_requests) { s->register_command( - std::string{method.first}, [this, func = method.second](oxen::quic::message m) { + std::string{method}, [this, func = callback](oxen::quic::message m) { _router.loop()->call([this, msg = std::move(m), func = std::move(func)]() mutable { - auto body = msg.body_str(); - auto respond = [m = std::move(msg)](std::string response) mutable { - m.respond(std::move(response), not m); - }; - std::invoke(func, this, body, std::move(respond)); + std::invoke(func, this, std::move(msg)); }); }); } diff --git a/llarp/link/link_manager.hpp b/llarp/link/link_manager.hpp index e51f892dd..034a9c7ee 100644 --- a/llarp/link/link_manager.hpp +++ b/llarp/link/link_manager.hpp @@ -345,13 +345,12 @@ namespace llarp // these requests are direct, i.e. not over a path; // the rest are relay->relay - // TODO: new RC fetch endpoint (which will be both client->relay and relay->relay) std::unordered_map< std::string_view, - void (LinkManager::*)(std::string_view body, std::function respond)> + void (LinkManager::*)(oxen::quic::message m)> direct_requests = { - {"publish_intro"sv, &LinkManager::handle_publish_intro}, - {"find_intro"sv, &LinkManager::handle_find_intro}}; + {"fetch_rcs"sv, &LinkManager::handle_fetch_rcs}, + {"fetch_router_ids"sv, &LinkManager::handle_fetch_router_ids}}; // Path relaying void