64bit channel mode fix
authorpk910 <philipp@zoelle1.de>
Tue, 28 Jun 2011 19:24:15 +0000 (21:24 +0200)
committerpk910 <philipp@zoelle1.de>
Tue, 28 Jun 2011 19:24:15 +0000 (21:24 +0200)
ircd/channel.c

index 28c6547d5dd81a9d58a77dd6b909d03674bfcd49..d1511be47ab30321f726109593655e20f5a2b071 100644 (file)
@@ -2340,10 +2340,10 @@ struct ParseState {
   int parc;
   char **parv;
   unsigned int flags;
   int parc;
   char **parv;
   unsigned int flags;
-  unsigned int dir;
+  ulong64 dir;
   unsigned int done;
   unsigned int done;
-  unsigned int add;
-  unsigned int del;
+  ulong64 add;
+  ulong64 del;
   int args_used;
   int max_args;
   int numbans;
   int args_used;
   int max_args;
   int numbans;
@@ -3133,16 +3133,12 @@ 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.");
                        }
                }
                                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);
                        }
                }
        } 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];
        }
 }
 
        }
 }
 
@@ -3676,6 +3672,7 @@ 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);
        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);
     break;
       case 'a': /* deal with limits */
        mode_parse_access(&state, flag_p);