Fixed: CLIENT_s::UpdateCommRules still used an invalid iterator if it erased one, which could cause the server to crash.
Erasing a client's comm rule in CLIENT_s::UpdateCommRules
like this:
if ( i->IsObsolete( ))
commRules.erase( i );
else
i++;
Means that the iterator i
becomes invalid after erasing it, and remains that way. This line must be changed to i = commRules.erase( i );
to ensure that i
is set to the next element in the list and remains valid.