summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cmd_kill.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/cmd_kill.cpp b/src/cmd_kill.cpp
index 1b8a10b51..1d58ea419 100644
--- a/src/cmd_kill.cpp
+++ b/src/cmd_kill.cpp
@@ -95,9 +95,19 @@ CmdResult cmd_kill::Handle (const char** parameters, int pcnt, userrec *user)
*/
ServerInstance->SNO->WriteToSnoMask('k',"Local Kill by %s: %s!%s@%s (%s)", user->nick, u->nick, u->ident, u->host, parameters[1]);
ServerInstance->Log(DEFAULT,"LOCAL KILL: %s :%s!%s!%s (%s)", u->nick, ServerInstance->Config->ServerName, user->dhost, user->nick, parameters[1]);
- u->Write(":%s KILL %s :%s!%s!%s (%s)", *ServerInstance->Config->HideKillsServer ? ServerInstance->Config->HideKillsServer : user->GetFullHost(),
- u->nick, ServerInstance->Config->ServerName, user->dhost,
- *ServerInstance->Config->HideKillsServer ? ServerInstance->Config->HideKillsServer : user->nick, parameters[1]);
+ /* Bug #419, make sure this message can only occur once even in the case of multiple KILL messages crossing the network, and change to show
+ * hidekillsserver as source if possible
+ */
+ if (!u->muted)
+ {
+ u->Write(":%s KILL %s :%s!%s!%s (%s)", *ServerInstance->Config->HideKillsServer ? ServerInstance->Config->HideKillsServer : user->GetFullHost(),
+ u->nick,
+ ServerInstance->Config->ServerName,
+ user->dhost,
+ *ServerInstance->Config->HideKillsServer ? ServerInstance->Config->HideKillsServer : user->nick,
+ parameters[1]);
+ u->muted = true;
+ }
}
// send the quit out