From 6fca27eb78b2073ae84398d065df728d75d04f4c Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Wed, 19 Nov 2025 13:40:12 +0000 Subject: Add to allow quickly connecting after boot. --- docs/conf/links.example.conf | 12 ++++++++---- src/modules/m_spanningtree/link.h | 1 + src/modules/m_spanningtree/main.cpp | 2 +- src/modules/m_spanningtree/utils.cpp | 5 +++-- src/modules/m_spanningtree/utils.h | 2 +- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/docs/conf/links.example.conf b/docs/conf/links.example.conf index 78eb9f4ac..ef2184754 100644 --- a/docs/conf/links.example.conf +++ b/docs/conf/links.example.conf @@ -118,15 +118,19 @@ # Simple autoconnect block. This enables automatic connections to a server. # Recommended setup is to have leaves connect to the hub, and have no # automatic connections started by the hub. - + # Failover autoconnect block. If you have multiple hubs, or want your network # to automatically link even if the hub is down, you can specify multiple # space separated servers to autoconnect; they will be tried in a round # robin fashion until one succeeds. Period defines the time for restarting -# a single loop. - +# a single loop. Bootperiod, if specified, is used for the first attempt +# after starting up. + #-#-#-#-#-#-#-#-#-#-#-# SERVICES CONFIGURATION #-#-#-#-#-#-#-#-#-#-#-#-# diff --git a/src/modules/m_spanningtree/link.h b/src/modules/m_spanningtree/link.h index 8c54b3eb6..45caafecd 100644 --- a/src/modules/m_spanningtree/link.h +++ b/src/modules/m_spanningtree/link.h @@ -56,6 +56,7 @@ public: std::shared_ptr tag; std::vector servers; unsigned long Period; + unsigned long BootPeriod; time_t NextConnectTime; /** Negative == inactive */ int position; diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index c2d9ad537..6ab0981ca 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -699,7 +699,7 @@ void ModuleSpanningTree::ReadConfig(ConfigStatus& status) // Re-read config stuff try { - Utils->ReadConfiguration(); + Utils->ReadConfiguration(status); } catch (const ModuleException& e) { diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp index 57a797405..6de8fe8ad 100644 --- a/src/modules/m_spanningtree/utils.cpp +++ b/src/modules/m_spanningtree/utils.cpp @@ -234,7 +234,7 @@ void SpanningTreeUtilities::RefreshIPCache() } } -void SpanningTreeUtilities::ReadConfiguration() +void SpanningTreeUtilities::ReadConfiguration(ConfigStatus& status) { const auto& options = ServerInstance->Config->ConfValue("options"); AllowOptCommon = options->getBool("allowmismatch"); @@ -349,7 +349,8 @@ void SpanningTreeUtilities::ReadConfiguration() { auto A = std::make_shared(tag); A->Period = tag->getDuration("period", 60, 1); - A->NextConnectTime = ServerInstance->Time() + A->Period; + A->BootPeriod = tag->getDuration("bootperiod", A->Period, 1); + A->NextConnectTime = ServerInstance->Time() + (status.initial ? A->BootPeriod : A->Period); A->position = -1; irc::spacesepstream ss(tag->getString("server")); std::string server; diff --git a/src/modules/m_spanningtree/utils.h b/src/modules/m_spanningtree/utils.h index f6ded5bf7..a8d143909 100644 --- a/src/modules/m_spanningtree/utils.h +++ b/src/modules/m_spanningtree/utils.h @@ -139,7 +139,7 @@ public: /** Read the spanningtree module's tags from the config file */ - void ReadConfiguration(); + void ReadConfiguration(ConfigStatus& status); /** Handle nick collision */ -- cgit v1.3.1-10-gc9f91