Silently ignore +z when users use it from ChanServ. Fixes SF#2970686.
authorMichael Poole <mdpoole@troilus.org>
Thu, 18 Mar 2010 03:00:32 +0000 (23:00 -0400)
committerMichael Poole <mdpoole@troilus.org>
Thu, 18 Mar 2010 03:00:32 +0000 (23:00 -0400)
src/proto-p10.c (mod_chanmode_parse): Just ignore +z when MCP_REGISTERED
  is set (which only happens from ChanServ).
src/opserv.c (cmd_clearmodes): Do not automatically clear +z.

src/opserv.c
src/proto-p10.c

index ec4b57fc58b6589286f6e654390708f52dacc2e2..abdbee95e234ac072f1d23d7bc32e046e13d930d 100644 (file)
@@ -579,7 +579,7 @@ static MODCMD_FUNC(cmd_clearmodes)
         return 0;
     }
     mod_chanmode_init(&change);
-    change.modes_clear = channel->modes;
+    change.modes_clear = channel->modes & ~MODE_REGISTERED;
     modcmd_chanmode_announce(&change);
     reply("OSMSG_CLEARMODES_DONE", channel->name);
     return 1;
index b59635d16fccce13b42e2818e2db0ee11cc912e9..d2c5cda8f6678e5145f35ffeeb6cedb2a74b75da 100644 (file)
@@ -2427,12 +2427,8 @@ mod_chanmode_parse(struct chanNode *channel, char **modes, unsigned int argc, un
         case 's': do_chan_mode(MODE_SECRET); break;
         case 't': do_chan_mode(MODE_TOPICLIMIT); break;
         case 'z':
-          if (!(flags & MCP_REGISTERED)) {
+          if (!(flags & MCP_REGISTERED))
               do_chan_mode(MODE_REGISTERED);
-          } else {
-              mod_chanmode_free(change);
-              return NULL;
-          }
           break;
 #undef do_chan_mode
         case 'l':