MODE_AUDITORIUM bugfix
[ircu2.10.12-pk.git] / ircd / channel.c
index 714dbd24be173957cb2ad8c67fcd66431189badb..28c6547d5dd81a9d58a77dd6b909d03674bfcd49 100644 (file)
@@ -3133,12 +3133,16 @@ static void audit_chan_users(struct ParseState *state, ulong64 *flag_p) {
                                sendcmdto_channel_butserv_butone(member->user, CMD_PART, member->channel, member->user, SKIP_OPS, "%H :%s", member->channel, "mode +u set.");
                        }
                }
+        state->add |= flag_p[0];
+        state->del &= ~flag_p[0];
        } else {
                for(member = state->chptr->members; member; member = member->next_member) {
                        if(!IsChanOp(member) && !HasVoice(member)) {
                                sendcmdto_channel_butserv_butone(member->user, CMD_JOIN, member->channel, member->user, SKIP_OPS, ":%H", member->channel);
                        }
                }
+               state->del |= flag_p[0];
+        state->add &= ~flag_p[0];
        }
 }
 
@@ -3672,7 +3676,6 @@ mode_parse(struct ModeBuf *mbuf, struct Client *cptr, struct Client *sptr,
        break;
          case 'u': /* deal with not oped members */
     audit_chan_users(&state, flag_p);
-       mode_parse_mode(&state, flag_p);
     break;
       case 'a': /* deal with limits */
        mode_parse_access(&state, flag_p);