summaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/main.cpp
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2014-01-05 15:04:01 +0100
committerAttila Molnar <attilamolnar@hush.com>2014-01-05 15:04:01 +0100
commit11916574f67962dce1d7a2fdf7ef6a3d2d1fa49f (patch)
tree1c3c602de5512a62e2db96652ddd540e6e53e821 /src/modules/m_spanningtree/main.cpp
parent2f181fef775da4a686a892c06af843dddfb7950a (diff)
Introduce Server class
- Replaces std::string server in User - Replaces InspIRCd::ULine() and SilentULine()
Diffstat (limited to 'src/modules/m_spanningtree/main.cpp')
-rw-r--r--src/modules/m_spanningtree/main.cpp34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp
index 8c04d6c90..3efd012ba 100644
--- a/src/modules/m_spanningtree/main.cpp
+++ b/src/modules/m_spanningtree/main.cpp
@@ -52,6 +52,17 @@ SpanningTreeCommands::SpanningTreeCommands(ModuleSpanningTree* module)
{
}
+namespace
+{
+ void SetLocalUsersServer(Server* newserver)
+ {
+ ServerInstance->FakeClient->server = newserver;
+ const LocalUserList& list = ServerInstance->Users->local_users;
+ for (LocalUserList::const_iterator i = list.begin(); i != list.end(); ++i)
+ (*i)->server = newserver;
+ }
+}
+
void ModuleSpanningTree::init()
{
ServerInstance->SNO->EnableSnomask('l', "LINK");
@@ -62,6 +73,10 @@ void ModuleSpanningTree::init()
delete ServerInstance->PI;
ServerInstance->PI = new SpanningTreeProtocolInterface;
+
+ delete ServerInstance->FakeClient->server;
+ SetLocalUsersServer(Utils->TreeRoot);
+
loopCall = false;
SplitInProgress = false;
@@ -81,7 +96,7 @@ void ModuleSpanningTree::ShowLinks(TreeServer* Current, User* user, int hops)
for (TreeServer::ChildServers::const_iterator i = children.begin(); i != children.end(); ++i)
{
TreeServer* server = *i;
- if ((server->Hidden) || ((Utils->HideULines) && (ServerInstance->ULine(server->GetName()))))
+ if ((server->Hidden) || ((Utils->HideULines) && (server->IsULine())))
{
if (user->IsOper())
{
@@ -94,7 +109,7 @@ void ModuleSpanningTree::ShowLinks(TreeServer* Current, User* user, int hops)
}
}
/* Don't display the line if its a uline, hide ulines is on, and the user isnt an oper */
- if ((Utils->HideULines) && (ServerInstance->ULine(Current->GetName())) && (!user->IsOper()))
+ if ((Utils->HideULines) && (Current->IsULine()) && (!user->IsOper()))
return;
/* Or if the server is hidden and they're not an oper */
else if ((Current->Hidden) && (!user->IsOper()))
@@ -560,20 +575,16 @@ void ModuleSpanningTree::OnUserQuit(User* user, const std::string &reason, const
// Hide the message if one of the following is true:
// - User is being quit due to a netsplit and quietbursts is on
// - Server is a silent uline
- bool hide = (((this->SplitInProgress) && (Utils->quiet_bursts)) || (ServerInstance->SilentULine(user->server)));
+ bool hide = (((this->SplitInProgress) && (Utils->quiet_bursts)) || (user->server->IsSilentULine()));
if (!hide)
{
ServerInstance->SNO->WriteToSnoMask('Q', "Client exiting on server %s: %s (%s) [%s]",
- user->server.c_str(), user->GetFullRealHost().c_str(), user->GetIPString().c_str(), oper_message.c_str());
+ user->server->GetName().c_str(), user->GetFullRealHost().c_str(), user->GetIPString().c_str(), oper_message.c_str());
}
}
// Regardless, We need to modify the user Counts..
- TreeServer* SourceServer = Utils->FindServer(user->server);
- if (SourceServer)
- {
- SourceServer->UserCount--;
- }
+ TreeServer::Get(user)->UserCount--;
}
void ModuleSpanningTree::OnUserPostNick(User* user, const std::string &oldnick)
@@ -624,7 +635,7 @@ void ModuleSpanningTree::OnPreRehash(User* user, const std::string &parameter)
{
CmdBuilder params((user ? user->uuid : ServerInstance->Config->GetSID()), "REHASH");
params.push_back(parameter);
- params.Forward(user ? Utils->BestRouteTo(user->server) : NULL);
+ params.Forward(user ? TreeServer::Get(user)->GetRoute() : NULL);
}
}
@@ -743,6 +754,9 @@ ModuleSpanningTree::~ModuleSpanningTree()
delete ServerInstance->PI;
ServerInstance->PI = new ProtocolInterface;
+ Server* newsrv = new Server(ServerInstance->Config->ServerName);
+ SetLocalUsersServer(newsrv);
+
/* This will also free the listeners */
delete Utils;