free all MemberFlood's on mode -f
[ircu2.10.12-pk.git] / 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;
+    }
   }
 }