소스 검색

* Balanced out mdop/mop kicks to not make entire net flood off.

svn: 2302
Bryan Drewery 21 년 전
부모
커밋
369e366ec5
2개의 변경된 파일25개의 추가작업 그리고 12개의 파일을 삭제
  1. 1 0
      doc/UPDATES
  2. 24 12
      src/mod/irc.mod/mode.c

+ 1 - 0
doc/UPDATES

@@ -49,6 +49,7 @@ Lines prefixed with '-' were disabled before release and are not finished, or ar
 * Fixed bots auto-opping passwordless users on JOIN, to match cmd_mop.
 * Fixed typo for 'help nopass'
 * Added CIDR/mask matching support for all user hosts, ie, '.+host user *!jerry@1.2.0.0/16' will match 'bob!jerry@1.2.3.4'
+* Balanced out mdop/mop kicks to not make entire net flood off.
 
 1.2.4
 * Fixed cmd_botset not displaying botnick.

+ 24 - 12
src/mod/irc.mod/mode.c

@@ -1054,24 +1054,36 @@ gotmode(char *from, char *msg)
 
           if (role && (!u || (u && !u->bot)) && m && !chan_sentkick(m)) {
             if (deops >= 3 && chan->mdop) {
-              m->flags |= SENTKICK;
-              simple_sprintf(tmp, "KICK %s %s :%s%s\r\n", chan->name, m->nick, kickprefix, response(RES_MASSDEOP));
-              tputs(serv, tmp, strlen(tmp));
-              if (u) {
-                simple_sprintf(tmp, "Mass deop on %s by %s", chan->dname, m->nick);
-                deflag_user(u, DEFLAG_MDOP, tmp, chan);
+              if (role < 5) {
+                m->flags |= SENTKICK;
+                simple_sprintf(tmp, "KICK %s %s :%s%s\r\n", chan->name, m->nick, kickprefix, response(RES_MASSDEOP));
+                if (role <= 2)
+                  tputs(serv, tmp, strlen(tmp));
+                else
+                  dprintf(DP_SERVER, "%s", tmp);
+              } else {
+                if (u) {
+                  simple_sprintf(tmp, "Mass deop on %s by %s", chan->dname, m->nick);
+                  deflag_user(u, DEFLAG_MDOP, tmp, chan);
+                }
               }
             }
 
             /* check for mop */
             if (ops >= 3) {
               if (chan->mop) {
-                m->flags |= SENTKICK;
-                simple_sprintf(tmp, "KICK %s %s :%s%s\r\n", chan->name, m->nick, kickprefix, response(RES_MANUALOP));
-                tputs(serv, tmp, strlen(tmp));
-                if (u) {
-                  simple_sprintf(tmp, "Mass op on %s by %s", chan->dname, m->nick);
-                  deflag_user(u, DEFLAG_MOP, tmp, chan);
+                if (role < 5) {
+                  m->flags |= SENTKICK;
+                  simple_sprintf(tmp, "KICK %s %s :%s%s\r\n", chan->name, m->nick, kickprefix, response(RES_MANUALOP));
+                  if (role <= 2)
+                    tputs(serv, tmp, strlen(tmp));
+                  else
+                    dprintf(DP_SERVER, "%s", tmp);
+                } else { 
+                  if (u) {
+                    simple_sprintf(tmp, "Mass op on %s by %s", chan->dname, m->nick);
+                    deflag_user(u, DEFLAG_MOP, tmp, chan);
+                  }
                 }
                 enforce_bitch(chan);        /* deop quick! */
               }