allow MODE_PARSE_FOCE flag overriding target channel check on MODE_FORWARD (srvx...
authorpk910 <philipp@zoelle1.de>
Mon, 18 Jul 2011 21:42:18 +0000 (23:42 +0200)
committerpk910 <philipp@zoelle1.de>
Mon, 18 Jul 2011 21:42:18 +0000 (23:42 +0200)
ircd/channel.c

index 8c6e38e8694bae4ca8f284cc347b9dee7fd0d7ba..30b9f1de6d3864cf78b71756416c9190184b3d81 100644 (file)
@@ -2537,15 +2537,17 @@ mode_parse_altchan(struct ParseState *state, ulong64 *flag_p)
     if (!IsChannelName(t_str) || !strIsIrcCh(t_str) || strlen(t_str) > IRCD_MIN(CHANNELLEN, feature_int(FEAT_CHANNELLEN)) || t_str[0] == '&') /* only parse it if it's a valid channel name! */
       return;
     
-    struct Channel *chptr;
-    struct Membership *member;
-    if (!(chptr = FindChannel(t_str)))
+    if(!(state->flags & MODE_PARSE_FORCE)) {
+      struct Channel *chptr;
+      struct Membership *member;
+      if (!(chptr = FindChannel(t_str)))
         return;
-    if(!(member = find_member_link(chptr, state->sptr)))
+      if(!(member = find_member_link(chptr, state->sptr)))
         return;
-    if(!IsChanOp(member)) {
+      if(!IsChanOp(member)) {
         send_notoper(state);
         return;
+      }
     }
     
     if (!(state->flags & MODE_PARSE_WIPEOUT) &&