bugfixes for the last commits
[ircu2.10.12-pk.git] / ircd / channel.c
index 714dbd24be173957cb2ad8c67fcd66431189badb..33cfb82ffff9f1dd11a70139b71a122d2fb0065f 100644 (file)
@@ -2339,17 +2339,17 @@ struct ParseState {
   struct Membership *member;
   int parc;
   char **parv;
-  unsigned int flags;
-  unsigned int dir;
-  unsigned int done;
-  unsigned int add;
-  unsigned int del;
+  ulong64 flags;
+  ulong64 dir;
+  ulong64 done;
+  ulong64 add;
+  ulong64 del;
   int args_used;
   int max_args;
   int numbans;
   struct Ban banlist[MAXPARA];
   struct {
-    unsigned int flag;
+    ulong64 flag;
     unsigned short oplevel;
     struct Client *client;
   } cli_change[MAXPARA];
@@ -3515,6 +3515,10 @@ mode_process_clients(struct ParseState *state)
     modebuf_mode_client(state->mbuf, state->cli_change[i].flag,
                        state->cli_change[i].client,
                         state->cli_change[i].oplevel);
+       
+       if(MyUser(member->user) && (member->channel->mode.mode & MODE_AUDITORIUM) && (state->cli_change[i].flag & MODE_CHANOP)) {
+               do_names(member->user, member->channel, NAMES_ALL|NAMES_EON|((member->status & MODE_CHANOP) ? 0 : NAMES_OPS));
+       }
   } /* for (i = 0; state->cli_change[i].flags; i++) */
 }
 
@@ -3944,7 +3948,7 @@ joinbuf_join(struct JoinBuf *jbuf, struct Channel *chan, unsigned int flags)
          }
        }
        
-       if((chan->mode.mode & MODE_DELJOINS) && !(flags & CHFL_VOICED_OR_OPPED)) {
+       if((chan->mode.mode & MODE_AUDITORIUM) && !(flags & CHFL_VOICED_OR_OPPED)) {
                //we have to send this JOIN event to ops only...                  
                sendcmdto_channel_butserv_butone(jbuf->jb_source, CMD_JOIN, chan, NULL, SKIP_NONOPS, "%H", chan);
                if(MyUser(jbuf->jb_source))