break;
}
}
- if(count <= 0 || time <= 0 || count > 999 || time > 9999) return;
+ if(count <= 0 || time <= 0 || count > 100 || time > 600) return;
if (!(state->flags & MODE_PARSE_WIPEOUT) &&
(!t_str || t_str == state->chptr->mode.noflood))
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;
+ }
}
}
free_MemberFlood = floodnode->next_memberflood;
} else
floodnode = (struct MemberFlood*) MyMalloc(sizeof(struct MemberFlood));
- memset(floodnode, 0, sizeof(struct MemberFlood));
floodnode->time = CurrentTime;
floodnode->next_memberflood = NULL;
if(floodcount > 0)