From 41405be612db6790b27e6248c22bf671318b85ec Mon Sep 17 00:00:00 2001 From: audric Date: Wed, 23 Feb 2022 14:21:47 +1100 Subject: [PATCH 1/2] summary status: no services means not running --- llarp/router/router.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/llarp/router/router.cpp b/llarp/router/router.cpp index ca981315f..02862f00d 100644 --- a/llarp/router/router.cpp +++ b/llarp/router/router.cpp @@ -116,6 +116,9 @@ namespace llarp return util::StatusObject{{"running", false}}; auto services = _hiddenServiceContext.ExtractStatus(); + if (services.is_null()) + return util::StatusObject{{"running", false}}; + auto link_types = _linkManager.ExtractStatus(); uint64_t tx_rate = 0; From eeb93343c00a7331f16273714c85a28a66c8d431 Mon Sep 17 00:00:00 2001 From: Jeff Date: Wed, 23 Feb 2022 09:21:38 -0500 Subject: [PATCH 2/2] rpc fixes for lokinet gui only add stats for services when we have them --- llarp/router/router.cpp | 57 ++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/llarp/router/router.cpp b/llarp/router/router.cpp index 02862f00d..fea94dafb 100644 --- a/llarp/router/router.cpp +++ b/llarp/router/router.cpp @@ -95,18 +95,17 @@ namespace llarp util::StatusObject Router::ExtractStatus() const { - if (_running) - { - return util::StatusObject{ - {"running", true}, - {"numNodesKnown", _nodedb->NumLoaded()}, - {"dht", _dht->impl->ExtractStatus()}, - {"services", _hiddenServiceContext.ExtractStatus()}, - {"exit", _exitContext.ExtractStatus()}, - {"links", _linkManager.ExtractStatus()}, - {"outboundMessages", _outboundMessageHandler.ExtractStatus()}}; - } - return util::StatusObject{{"running", false}}; + if (not _running) + util::StatusObject{{"running", false}}; + + return util::StatusObject{ + {"running", true}, + {"numNodesKnown", _nodedb->NumLoaded()}, + {"dht", _dht->impl->ExtractStatus()}, + {"services", _hiddenServiceContext.ExtractStatus()}, + {"exit", _exitContext.ExtractStatus()}, + {"links", _linkManager.ExtractStatus()}, + {"outboundMessages", _outboundMessageHandler.ExtractStatus()}}; } util::StatusObject @@ -116,8 +115,6 @@ namespace llarp return util::StatusObject{{"running", false}}; auto services = _hiddenServiceContext.ExtractStatus(); - if (services.is_null()) - return util::StatusObject{{"running", false}}; auto link_types = _linkManager.ExtractStatus(); @@ -143,16 +140,19 @@ namespace llarp // Merge snodeSessions, remoteSessions and default into a single array std::vector builders; - const auto& serviceDefault = services.at("default"); - builders.push_back(serviceDefault); + if (services.is_object()) + { + const auto& serviceDefault = services.at("default"); + builders.push_back(serviceDefault); - auto snode_sessions = serviceDefault.at("snodeSessions"); - for (const auto& session : snode_sessions) - builders.push_back(session); + auto snode_sessions = serviceDefault.at("snodeSessions"); + for (const auto& session : snode_sessions) + builders.push_back(session); - auto remote_sessions = serviceDefault.at("remoteSessions"); - for (const auto& session : remote_sessions) - builders.push_back(session); + auto remote_sessions = serviceDefault.at("remoteSessions"); + for (const auto& session : remote_sessions) + builders.push_back(session); + } // Iterate over all items on this array to build the global pathStats uint64_t pathsCount = 0; @@ -183,13 +183,10 @@ namespace llarp } double ratio = static_cast(success) / (attempts + 1); - return util::StatusObject{ + util::StatusObject stats{ {"running", true}, {"version", llarp::VERSION_FULL}, {"uptime", to_json(Uptime())}, - {"authCodes", services["default"]["authCodes"]}, - {"exitMap", services["default"]["exitMap"]}, - {"lokiAddress", services["default"]["identity"]}, {"numPathsBuilt", pathsCount}, {"numPeersConnected", peers}, {"numRoutersKnown", _nodedb->NumLoaded()}, @@ -197,6 +194,14 @@ namespace llarp {"txRate", tx_rate}, {"rxRate", rx_rate}, }; + + if (services.is_object()) + { + stats["authCodes"] = services["default"]["authCodes"]; + stats["exitMap"] = services["default"]["exitMap"]; + stats["lokiAddress"] = services["default"]["identity"]; + } + return stats; } bool