From 4b16dc1aa7461274865aa017404efa85693ff6d1 Mon Sep 17 00:00:00 2001 From: Doug Hoyte Date: Fri, 18 Oct 2024 16:35:43 -0400 Subject: [PATCH] some minor tweaks to the connection timeout, docs --- docs/router.md | 2 ++ src/apps/mesh/cmd_router.cpp | 28 ++++++++++++++-------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/docs/router.md b/docs/router.md index b3a55a4..2bfe113 100644 --- a/docs/router.md +++ b/docs/router.md @@ -18,6 +18,8 @@ The config file must have a section `streams`. Within that, you may have as many ### Example + connectionTimeout = 20 + streams { ## Stream down events from our friend relays diff --git a/src/apps/mesh/cmd_router.cpp b/src/apps/mesh/cmd_router.cpp index 2a48f9d..5d8c46f 100644 --- a/src/apps/mesh/cmd_router.cpp +++ b/src/apps/mesh/cmd_router.cpp @@ -218,7 +218,8 @@ struct Router { }; std::string routerConfigFile; - uint64_t connectionTimeoutUs = 20'000'000; + const uint64_t defaultConnectionTimeoutUs = 20'000'000; + uint64_t connectionTimeoutUs = 0; WriterPipeline writer; Decompressor decomp; @@ -293,19 +294,6 @@ struct Router { void reconcileConfig() { LI << "Loading router config file: " << routerConfigFile; - try { - auto routerConfig = loadRawTaoConfig(routerConfigFile); - - if (routerConfig.find("timeout")) { - connectionTimeoutUs = stoi(routerConfig.at("timeout").get_string()) * 1'000'000; - LI << "Using configured timeout (seconds): " << (connectionTimeoutUs / 1'000'000); - } else { - LI << "Using default timeout (seconds): " << connectionTimeoutUs / 1'000'000; - } - } catch (std::exception &e) { - LE << "Failed to parse router timeout in config: " << e.what(); - } - try { auto routerConfig = loadRawTaoConfig(routerConfigFile); @@ -326,6 +314,18 @@ struct Router { for (const auto &[groupName, spec] : routerConfig.at("streams").get_object()) unneededGroups.erase(groupName); for (const auto &groupName : unneededGroups) streamGroups.erase(groupName); } + + // connectionTimeout + + uint64_t newTimeoutUs = defaultConnectionTimeoutUs; + if (routerConfig.get_object().contains("connectionTimeout")) { + newTimeoutUs = routerConfig.at("connectionTimeout").get_unsigned() * 1'000'000; + } + + if (connectionTimeoutUs != newTimeoutUs) { + connectionTimeoutUs = newTimeoutUs; + LI << "Using connection timeout: " << (connectionTimeoutUs / 1'000'000) << " seconds"; + } } catch (std::exception &e) { LE << "Failed to parse router config: " << e.what(); if (!firstConfigLoadSuccess) ::exit(1);