]> jfr.im git - irc/quakenet/newserv.git/blobdiff - localuser/localuser.c
LOCALUSER: localuserkill() now triggers the HOOK_NICK_KILL trigger.
[irc/quakenet/newserv.git] / localuser / localuser.c
index 87b361f509338b0f99836756e15d083f781f1fb6..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);
 }
 
@@ -562,7 +572,7 @@ void checkpendingkills(int hooknum, void *arg) {
 }
 
 void sendaccountmessage(nick *np) {
-  if (connected) {
+  if (connected && IsAccount(np)) {
     if (np->auth) {
       if (np->auth->flags) {
         irc_send("%s AC %s %s %ld %lu %"PRIu64,mynumeric->content, longtonumeric(np->numeric,5), np->authname, np->accountts, np->auth->userid, np->auth->flags);
@@ -620,7 +630,7 @@ void localusersetaccountflags(authname *anp, u_int64_t accountflags) {
   arg[1] = &oldflags;
   anp->flags = accountflags;
 
-  for(np=anp->nicks;np;np=np->next)
+  for(np=anp->nicks;np;np=np->nextbyauthname)
     sendaccountmessage(np);
 
   triggerhook(HOOK_AUTH_FLAGSUPDATED, arg);