diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-09-05 00:19:35 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-09-05 00:19:35 +0000 |
commit | ddb0e734b5fa6edc36747893ec3759a7fc2ebb05 (patch) | |
tree | 658955f98876e0ac6c940cecdfc0067de24b86ec | |
parent | cc463cdd983e429abee0f9221801402372853f61 (diff) |
This is a complex one: when autoconnecting, we check each links failover, and try and FindServer it. If we find that link's failover in the network, we dont try and autoconnect it as it probably established a link to that via another route anyway.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5144 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r-- | src/modules/m_spanningtree.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/modules/m_spanningtree.cpp b/src/modules/m_spanningtree.cpp index e1895f4b2..9c27ee7f5 100644 --- a/src/modules/m_spanningtree.cpp +++ b/src/modules/m_spanningtree.cpp @@ -4123,6 +4123,18 @@ class ModuleSpanningTree : public Module ServerInstance->Log(DEBUG,"Auto-Connecting %s",x->Name.c_str()); x->NextConnectTime = curtime + x->AutoConnect; TreeServer* CheckDupe = FindServer(x->Name.c_str()); + if (x->FailOver.length()) + { + TreeServer* CheckFailOver = FindServer(x->FailOver.c_str()); + if (CheckFailOver) + { + /* The failover for this server is currently a member of the network. + * The failover probably succeeded, where the main link did not. + * Don't try the main link until the failover is gone again. + */ + continue; + } + } if (!CheckDupe) { // an autoconnected server is not connected. Check if its time to connect it |