]> jfr.im git - irc/quakenet/newserv.git/commitdiff
LOCALUSER: localuserkill() now triggers the HOOK_NICK_KILL trigger.
authorsplidge <redacted>
Thu, 19 Mar 2009 00:38:35 +0000 (00:38 +0000)
committersplidge <redacted>
Thu, 19 Mar 2009 00:38:35 +0000 (00:38 +0000)
Fixes authtracker not terminating sessions when users are suspended, and
also corners where one service killing another doesn't properly clean up the
localuser setup.

localuser/localuser.c

index e46f09a6482ea3a134856c0a7ba6110f4dcd5627..c7db7cb1f90a66ac8dc3763ac5b74f320cd98912 100644 (file)
@@ -513,6 +513,8 @@ void sethostuser(nick *target, char *ident, char *host) {
 void _killuser(nick *source, nick *target, char *reason) {
   char senderstr[6];
   char sourcestring[HOSTLEN+NICKLEN+3];
+  char reasonstr[512];
+  void *args[2];
 
   if (!source) {
     /* If we have a null nick, use the server.. */
@@ -523,7 +525,15 @@ void _killuser(nick *source, nick *target, char *reason) {
     sprintf(sourcestring,"%s!%s",source->host->name->content, source->nick);
   }
 
-  irc_send("%s D %s :%s (%s)",senderstr,longtonumeric(target->numeric,5),sourcestring,reason);
+  snprintf(reasonstr,512,"%s (%s)",sourcestring,reason);
+  reasonstr[511]='\0';
+
+  irc_send("%s D %s :%s",senderstr,longtonumeric(target->numeric,5),reasonstr);
+  
+  args[0]=target;
+  args[1]=reasonstr;
+  triggerhook(HOOK_NICK_KILL, args);
+
   deletenick(target);
 }