diff options
-rw-r--r-- | src/cmd_kill.cpp | 16 |
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 |