added MODE_AUDITORIUM /names refresh on op/deop
[ircu2.10.12-pk.git] / ircd / channel.c
index d1511be47ab30321f726109593655e20f5a2b071..c839fa2285c650bcae9ce27e3b082997c96d2e5c 100644 (file)
@@ -2339,9 +2339,9 @@ struct ParseState {
   struct Membership *member;
   int parc;
   char **parv;
-  unsigned int flags;
+  ulong64 flags;
   ulong64 dir;
-  unsigned int done;
+  ulong64 done;
   ulong64 add;
   ulong64 del;
   int args_used;
@@ -2349,7 +2349,7 @@ struct ParseState {
   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(state->sptr) && (state->chptr->mode.mode & MODE_AUDITORIUM) && (state->cli_change[i].flag & MODE_CHANOP)) {
+               do_names(state->sptr, state->chptr, NAMES_ALL|NAMES_EON|((member->status & MODE_CHANOP) ? 0 : NAMES_OPS));
+       }
   } /* for (i = 0; state->cli_change[i].flags; i++) */
 }