Author: Alex Badea <vampire@p16.pub.ro> (by way of Kev <klmitch@mit.edu>)
[ircu2.10.12-pk.git] / ircd / s_user.c
index 82709b3e5a5fab4972d3a6a490996f11dab684ab..467bea6a370ce4045b8984160a4383472af205c9 100644 (file)
@@ -729,6 +729,7 @@ int set_nick_name(struct Client* cptr, struct Client* sptr,
      */
     if (MyUser(sptr)) {
       const char* channel_name;
+      struct Membership *member;
       if ((channel_name = find_no_nickchange_channel(sptr))) {
         return send_reply(cptr, ERR_BANNICKCHANGE, channel_name);
       }
@@ -737,7 +738,7 @@ int set_nick_name(struct Client* cptr, struct Client* sptr,
        * then 30 seconds ago. This is intended to get rid of
        * clone bots doing NICK FLOOD. -SeKs
        * If someone didn't change their nick for more then 60 seconds
-       * however, allow to do two nick changes immedately after another
+       * however, allow to do two nick changes immediately after another
        * before limiting the nick flood. -Run
        */
       if (CurrentTime < cli_nextnick(cptr)) {
@@ -756,6 +757,10 @@ int set_nick_name(struct Client* cptr, struct Client* sptr,
         if (cli_nextnick(cptr) < CurrentTime)
           cli_nextnick(cptr) = CurrentTime;
       }
+      /* Invalidate all bans against the user so we check them again */
+      for (member = (cli_user(cptr))->channel; member;
+          member = member->next_channel)
+       ClearBanValid(member);
     }
     /*
      * Also set 'lastnick' to current time, if changed.
@@ -1031,7 +1036,7 @@ void send_user_info(struct Client* sptr, char* names, int rpl, InfoFormatter fmt
     if ((acptr = FindUser(name))) {
       if (users_found++)
        msgq_append(0, mb, " ");
-      (*fmt)(acptr, mb);
+      (*fmt)(acptr, sptr, mb);
     }
     if (5 == ++arg_count)
       break;