aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree
diff options
context:
space:
mode:
authorGravatar Sadie Powell2025-11-19 13:40:12 +0000
committerGravatar Sadie Powell2025-11-19 13:40:12 +0000
commit6fca27eb78b2073ae84398d065df728d75d04f4c (patch)
treeda5115a9caa5f5cd7744e86dbda56c161304f819 /src/modules/m_spanningtree
parentImprove silence list serialization. (diff)
Add <autoconnect:bootperiod> to allow quickly connecting after boot.
Diffstat (limited to 'src/modules/m_spanningtree')
-rw-r--r--src/modules/m_spanningtree/link.h1
-rw-r--r--src/modules/m_spanningtree/main.cpp2
-rw-r--r--src/modules/m_spanningtree/utils.cpp5
-rw-r--r--src/modules/m_spanningtree/utils.h2
4 files changed, 6 insertions, 4 deletions
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<ConfigTag> tag;
std::vector<std::string> 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<Autoconnect>(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
*/