Просмотр исходного кода

* Port [3473] to 1.2.14
* Misc cleanup


svn: 3474

Bryan Drewery 19 лет назад
Родитель
Сommit
531b7c72bb
2 измененных файлов с 14 добавлено и 14 удалено
  1. 13 13
      src/mod/irc.mod/chan.c
  2. 1 1
      src/mod/irc.mod/irc.h

+ 13 - 13
src/mod/irc.mod/chan.c

@@ -263,7 +263,7 @@ void priority_do(struct chanset_t * chan, bool opsonly, int action)
             actions++;
             actions++;
             sent++;
             sent++;
             if (chan->closed_ban)
             if (chan->closed_ban)
-              doban(chan, m);
+              do_closed_kick(chan, m);
             dprintf(DP_MODE, "KICK %s %s :%s%s\n", chan->name, m->nick, kickprefix, response(RES_CLOSED));
             dprintf(DP_MODE, "KICK %s %s :%s%s\n", chan->name, m->nick, kickprefix, response(RES_CLOSED));
             m->flags |= SENTKICK;
             m->flags |= SENTKICK;
             if (actions >= ct)
             if (actions >= ct)
@@ -305,7 +305,7 @@ void priority_do(struct chanset_t * chan, bool opsonly, int action)
           } else if ((action == PRIO_KICK) && !chan_sentkick(m)) {
           } else if ((action == PRIO_KICK) && !chan_sentkick(m)) {
             actions++;
             actions++;
             if (chan->closed_ban)
             if (chan->closed_ban)
-              doban(chan, m);
+              do_closed_kick(chan, m);
             dprintf(DP_MODE, "KICK %s %s :%s%s\n", chan->name, m->nick, kickprefix, response(RES_CLOSED));
             dprintf(DP_MODE, "KICK %s %s :%s%s\n", chan->name, m->nick, kickprefix, response(RES_CLOSED));
             m->flags |= SENTKICK;
             m->flags |= SENTKICK;
             if ((actions >= ct) || (sent > 5))
             if ((actions >= ct) || (sent > 5))
@@ -589,7 +589,7 @@ static bool detect_chan_flood(char *floodnick, char *floodhost, char *from,
 
 
 /* Given a chan/m do all necesary exempt checks and ban. */
 /* Given a chan/m do all necesary exempt checks and ban. */
 static void refresh_ban_kick(struct chanset_t*, memberlist *, char *);
 static void refresh_ban_kick(struct chanset_t*, memberlist *, char *);
-static void doban(struct chanset_t *chan, memberlist *m)
+static void do_closed_kick(struct chanset_t *chan, memberlist *m)
 {
 {
   if (!chan || !m) return;
   if (!chan || !m) return;
 
 
@@ -629,18 +629,14 @@ static char *quickban(struct chanset_t *chan, char *uhost)
  */
  */
 static void kick_all(struct chanset_t *chan, char *hostmask, const char *comment, int bantype)
 static void kick_all(struct chanset_t *chan, char *hostmask, const char *comment, int bantype)
 {
 {
-  if (!me_op(chan))
-    return;
-
   int flushed = 0;
   int flushed = 0;
   char s[UHOSTLEN] = "";
   char s[UHOSTLEN] = "";
   struct flag_record fr = {FR_GLOBAL | FR_CHAN, 0, 0, 0 };
   struct flag_record fr = {FR_GLOBAL | FR_CHAN, 0, 0, 0 };
 
 
   for (memberlist *m = chan->channel.member; m && m->nick[0]; m = m->next) {
   for (memberlist *m = chan->channel.member; m && m->nick[0]; m = m->next) {
     simple_sprintf(s, "%s!%s", m->nick, m->userhost);
     simple_sprintf(s, "%s!%s", m->nick, m->userhost);
-    get_user_flagrec(m->user ? m->user : get_user_by_host(s), &fr, chan->dname);
-    if (me_op(chan) &&
-	(wild_match(hostmask, s) || match_cidr(hostmask, s)) && 
+    get_user_flagrec(m->user, &fr, chan->dname);
+    if ((wild_match(hostmask, s) || match_cidr(hostmask, s)) && 
         !chan_sentkick(m) &&
         !chan_sentkick(m) &&
 	!match_my_nick(m->nick) && !chan_issplit(m) &&
 	!match_my_nick(m->nick) && !chan_issplit(m) &&
 	!(use_exempts &&
 	!(use_exempts &&
@@ -666,7 +662,6 @@ static void refresh_ban_kick(struct chanset_t* chan, memberlist *m, char *user)
 {
 {
   if (!m || chan_sentkick(m))
   if (!m || chan_sentkick(m))
     return;
     return;
-
   struct flag_record fr = {FR_GLOBAL | FR_CHAN, 0, 0, 0 };
   struct flag_record fr = {FR_GLOBAL | FR_CHAN, 0, 0, 0 };
   get_user_flagrec(m->user, &fr, chan->dname);
   get_user_flagrec(m->user, &fr, chan->dname);
 
 
@@ -983,9 +978,11 @@ void recheck_channel_modes(struct chanset_t *chan)
 
 
 static void check_this_member(struct chanset_t *chan, char *nick, struct flag_record *fr)
 static void check_this_member(struct chanset_t *chan, char *nick, struct flag_record *fr)
 {
 {
-  memberlist *m = ismember(chan, nick);
+  if (match_my_nick(nick) || !me_op(chan))
+    return;
 
 
-  if (!m || match_my_nick(nick) || !me_op(chan))
+  memberlist *m = ismember(chan, nick);
+  if (!m)
     return;
     return;
 
 
   /* +d or bitch and not an op
   /* +d or bitch and not an op
@@ -1023,10 +1020,13 @@ static void check_this_member(struct chanset_t *chan, char *nick, struct flag_re
     refresh_invite(chan, s);
     refresh_invite(chan, s);
   /* don't kickban if permanent exempted */
   /* don't kickban if permanent exempted */
   if (!(use_exempts &&
   if (!(use_exempts &&
-        (u_match_mask(global_exempts,s) ||
+        (u_match_mask(global_exempts, s) ||
          u_match_mask(chan->exempts, s)))) {
          u_match_mask(chan->exempts, s)))) {
+
+    /* Are they banned in the internal list? */
     if (u_match_mask(global_bans, s) || u_match_mask(chan->bans, s))
     if (u_match_mask(global_bans, s) || u_match_mask(chan->bans, s))
       refresh_ban_kick(chan, m, s);
       refresh_ban_kick(chan, m, s);
+
     /* are they +k ? */
     /* are they +k ? */
     if (!chan_sentkick(m) && (chan_kick(*fr) || glob_kick(*fr)) && me_op(chan)) {
     if (!chan_sentkick(m) && (chan_kick(*fr) || glob_kick(*fr)) && me_op(chan)) {
       char *p = (char *) get_user(&USERENTRY_COMMENT, m->user);
       char *p = (char *) get_user(&USERENTRY_COMMENT, m->user);

+ 1 - 1
src/mod/irc.mod/irc.h

@@ -83,7 +83,7 @@ static void my_setkey(struct chanset_t *, char *);
 static bool detect_chan_flood(char *, char *, char *, struct chanset_t *, int,
 static bool detect_chan_flood(char *, char *, char *, struct chanset_t *, int,
 			     char *);
 			     char *);
 static bool new_mask(masklist *, char *, char *);
 static bool new_mask(masklist *, char *, char *);
-static void doban(struct chanset_t *, memberlist *);
+static void do_closed_kick(struct chanset_t *, memberlist *);
 static char *quickban(struct chanset_t *, char *);
 static char *quickban(struct chanset_t *, char *);
 static bool killmember(struct chanset_t *chan, char *nick);
 static bool killmember(struct chanset_t *chan, char *nick);
 static void check_lonely_channel(struct chanset_t *chan);
 static void check_lonely_channel(struct chanset_t *chan);