#include "client.h"
#include "hash.h"
#include "ircd.h"
+#include "ircd_features.h"
#include "ircd_log.h"
-#include "ircd_policy.h"
#include "ircd_reply.h"
#include "ircd_snprintf.h"
#include "ircd_string.h"
#include "send.h"
#include "whowas.h"
-#include <assert.h>
+/* #include <assert.h> -- Now using assert in ircd_log.h */
#include <string.h>
/*
*
*/
static int do_kill(struct Client* cptr, struct Client* sptr,
- struct Client* victim, char* inpath, char* path, char *msg)
+ struct Client* victim, char* inpath, char* path, char* msg)
{
assert(0 != cptr);
assert(0 != sptr);
- assert(IsUser(victim));
+ assert(!IsServer(victim));
/*
* Notify all *local* opers about the KILL (this includes the one
* have changed the target because of the nickname change.
*/
sendto_opmask_butone(0, IsServer(sptr) ? SNO_SERVKILL : SNO_OPERKILL,
- "Received KILL message for %s. From %s Path: %s!%s %s",
+ "Received KILL message for %s from %s Path: %s!%s %s",
get_client_name(victim, SHOW_IP), cli_name(sptr),
inpath, path, msg);
log_write_kill(victim, sptr, inpath, path, msg);
inpath, path, msg);
/*
- * Set FLAGS_KILLED. This prevents exit_one_client from sending
+ * Set FLAG_KILLED. This prevents exit_one_client from sending
* the unnecessary QUIT for this. (This flag should never be
* set in any other place)
*/
- cli_flags(victim) |= FLAGS_KILLED;
+ SetFlag(victim, FLAG_KILLED);
}
/*
* In accordance with the new hiding rules, the victim
* always sees the kill as coming from me.
*/
-#ifdef HEAD_IN_SAND_KILLWHO
if (MyConnect(victim))
- sendcmdto_one(&me, CMD_KILL, victim, "%C :%s %s", victim,
- HEAD_IN_SAND_SERVERNAME, msg);
- return exit_client_msg(cptr, victim, &me, "Killed (%s %s)",
- HEAD_IN_SAND_SERVERNAME, msg);
-#else
- if (MyConnect(victim))
- sendcmdto_one(sptr, CMD_KILL, victim, "%C :%s %s", victim,
- cli_name(sptr), msg);
- return exit_client_msg(cptr, victim, sptr, "Killed (%s %s)", cli_name(sptr),
+ sendcmdto_one(feature_bool(FEAT_HIS_KILLWHO) ? &his : sptr, CMD_KILL,
+ victim, "%C :%s %s", victim, feature_bool(FEAT_HIS_KILLWHO)
+ ? feature_str(FEAT_HIS_SERVERNAME) : cli_name(sptr), msg);
+ return exit_client_msg(cptr, victim, feature_bool(FEAT_HIS_KILLWHO)
+ ? &me : sptr, "Killed (%s %s)",
+ feature_bool(FEAT_HIS_KILLWHO) ?
+ feature_str(FEAT_HIS_SERVERNAME) : cli_name(sptr),
msg);
-#endif
}
/*
- * ms_kill - server message handler template
+ * ms_kill - server message handler
*
* NOTE: IsServer(cptr) == true;
*
}
/*
- * mo_kill - oper message handler template
+ * mo_kill - oper message handler
*
* NOTE: IsPrivileged(sptr), IsAnOper(sptr) == true
* IsServer(cptr), IsServer(sptr) == false
if (!(victim = FindClient(user))) {
/*
- * If the user has recently changed nick, we automaticly
+ * If the user has recently changed nick, we automatically
* rewrite the KILL for this new nickname--this keeps
* servers in synch when nick change and kill collide
*/
if (!MyConnect(victim) && !HasPriv(sptr, PRIV_KILL)) {
- sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Nick %s isnt on your server",
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Nick %s isn't on your server",
sptr, cli_name(victim));
return 0;
}