free all MemberFlood's on mode -f
authorpk910 <philipp@zoelle1.de>
Fri, 1 Jul 2011 22:52:50 +0000 (00:52 +0200)
committerpk910 <philipp@zoelle1.de>
Fri, 1 Jul 2011 22:58:37 +0000 (00:58 +0200)
ircd/channel.c

index fd48bde4b2af4422ff81423b2e86d42f40879f11..1ca8519486edcb0a135583718df110e91a2a78fb 100644 (file)
@@ -2727,6 +2727,16 @@ mode_parse_noflood(struct ParseState *state, ulong64 *flag_p)
     noflood_value <<= 3;
     noflood_value |= flags;
     state->chptr->mode.noflood_value = noflood_value;
+  } else {
+    //removed the mode so free all flood objects
+    struct Membership *member;
+    for(member = state->chptr->members; member; member = member->next_member) {
+        struct MemberFlood *floodnode;
+        for(floodnode = member->flood; floodnode; floodnode = floodnode->next_memberflood) {} //simply walk to the end
+        floodnode->next_memberflood = free_MemberFlood;
+        free_MemberFlood  = floodnode;
+        member->flood = NULL;
+    }
   }
 }