diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/commands/cmd_quit.cpp | 11 | ||||
-rw-r--r-- | src/modules/m_spanningtree/main.cpp | 4 | ||||
-rw-r--r-- | src/modules/m_spanningtree/operquit.cpp | 2 | ||||
-rw-r--r-- | src/modules/m_spanningtree/treeserver.cpp | 6 | ||||
-rw-r--r-- | src/usermanager.cpp | 19 | ||||
-rw-r--r-- | src/users.cpp | 10 |
6 files changed, 21 insertions, 31 deletions
diff --git a/src/commands/cmd_quit.cpp b/src/commands/cmd_quit.cpp index 9c0392162..e29382e84 100644 --- a/src/commands/cmd_quit.cpp +++ b/src/commands/cmd_quit.cpp @@ -38,7 +38,16 @@ CmdResult CommandQuit::Handle (const std::vector<std::string>& parameters, User else quitmsg = parameters.size() ? parameters[0] : "Client exited"; - ServerInstance->Users->QuitUser(user, quitmsg); + std::string* operquit; + if (user->GetExt("operquit", operquit)) + { + ServerInstance->Users->QuitUser(user, quitmsg, operquit->c_str()); + delete operquit; + } + else + { + ServerInstance->Users->QuitUser(user, quitmsg); + } return CMD_SUCCESS; } diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index 3e2b5d3b5..ed0165c0e 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -711,13 +711,13 @@ void ModuleSpanningTree::OnRemoteKill(User* source, User* dest, const std::strin if (!IS_LOCAL(source)) return; // Only start routing if we're origin. + dest->Extend("operquit", new std::string(operreason)); parameterlist params; - params.push_back(":"+reason); + params.push_back(":"+operreason); Utils->DoOneToMany(dest->uuid,"OPERQUIT",params); params.clear(); params.push_back(dest->uuid); params.push_back(":"+reason); - dest->SetOperQuit(operreason); Utils->DoOneToMany(source->uuid,"KILL",params); } diff --git a/src/modules/m_spanningtree/operquit.cpp b/src/modules/m_spanningtree/operquit.cpp index a71f73da7..5260cd990 100644 --- a/src/modules/m_spanningtree/operquit.cpp +++ b/src/modules/m_spanningtree/operquit.cpp @@ -30,7 +30,7 @@ bool TreeSocket::OperQuit(const std::string &prefix, parameterlist ¶ms) if (u) { - u->SetOperQuit(params[0]); + u->Extend("operquit", new std::string(params[0])); params[0] = ":" + params[0]; Utils->DoOneToAllButSender(prefix,"OPERQUIT",params,prefix); } diff --git a/src/modules/m_spanningtree/treeserver.cpp b/src/modules/m_spanningtree/treeserver.cpp index 6c8c6a33c..c9f4cfdfa 100644 --- a/src/modules/m_spanningtree/treeserver.cpp +++ b/src/modules/m_spanningtree/treeserver.cpp @@ -176,13 +176,13 @@ int TreeServer::QuitUsers(const std::string &reason) User* a = (User*)*n; if (!IS_LOCAL(a)) { + if (this->Utils->quiet_bursts) + a->quietquit = true; + if (ServerInstance->Config->HideSplits) ServerInstance->Users->QuitUser(a, "*.net *.split", reason_s); else ServerInstance->Users->QuitUser(a, reason_s); - - if (this->Utils->quiet_bursts) - a->quietquit = true; } } return time_to_die.size(); diff --git a/src/usermanager.cpp b/src/usermanager.cpp index 31ffad007..adec2fe16 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -176,22 +176,13 @@ void UserManager::QuitUser(User *user, const std::string &quitreason, const char ServerInstance->Logs->Log("USERS", DEBUG, "QuitUser: %s '%s'", user->nick.c_str(), quitreason.c_str()); user->Write("ERROR :Closing link: (%s@%s) [%s]", user->ident.c_str(), user->host.c_str(), *operreason ? operreason : quitreason.c_str()); - user->quietquit = false; - user->quitmsg = quitreason; - std::string reason; std::string oper_reason; reason.assign(quitreason, 0, ServerInstance->Config->Limits.MaxQuit); - if (!*operreason) - { - user->operquitmsg = quitreason; - oper_reason.assign(quitreason, 0, ServerInstance->Config->Limits.MaxQuit); - } - else - { - user->operquitmsg = operreason; + if (operreason && *operreason) oper_reason.assign(operreason, 0, ServerInstance->Config->Limits.MaxQuit); - } + else + oper_reason = quitreason; ServerInstance->GlobalCulls.AddItem(user); @@ -244,7 +235,7 @@ void UserManager::QuitUser(User *user, const std::string &quitreason, const char if (!user->quietquit) { ServerInstance->SNO->WriteToSnoMask('q',"Client exiting: %s!%s@%s [%s]", - user->nick.c_str(), user->ident.c_str(), user->host.c_str(), user->operquitmsg.c_str()); + user->nick.c_str(), user->ident.c_str(), user->host.c_str(), oper_reason.c_str()); } } else @@ -252,7 +243,7 @@ void UserManager::QuitUser(User *user, const std::string &quitreason, const char if ((!ServerInstance->SilentULine(user->server)) && (!user->quietquit)) { ServerInstance->SNO->WriteToSnoMask('Q',"Client exiting on server %s: %s!%s@%s [%s]", - user->server, user->nick.c_str(), user->ident.c_str(), user->host.c_str(), user->operquitmsg.c_str()); + user->server, user->nick.c_str(), user->ident.c_str(), user->host.c_str(), oper_reason.c_str()); } } user->AddToWhoWas(); diff --git a/src/users.cpp b/src/users.cpp index 35aa2cd30..dfff7f034 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -1926,16 +1926,6 @@ void User::HandleEvent(EventType et, int errornum) } } -void User::SetOperQuit(const std::string &oquit) -{ - operquitmsg = oquit; -} - -const std::string& User::GetOperQuit() -{ - return operquitmsg; -} - void User::IncreasePenalty(int increase) { this->Penalty += increase; |