Abandon the fantesy that multiple optimize 8 passes will achieve anything.

Signed-off-by: Tom Eastep <teastep@shorewall.net>
This commit is contained in:
Tom Eastep 2010-04-16 17:12:08 -07:00
parent 938cfd7ba4
commit a1a78cf09b

View File

@ -1772,29 +1772,23 @@ sub optimize_ruleset() {
# #
# Now delete duplicate chains # Now delete duplicate chains
# #
$progress = 1; $passes++;
while ( $progress ) { for my $chainref ( grep $_->{referenced} && ! $_->{builtin}, values %{$chain_table{$table}} ) {
$progress = 0; my $rules = $chainref->{rules};
$passes++; next if not @$rules;
CHAIN:
for my $chainref ( grep $_->{referenced} && ! $_->{builtin}, values %{$chain_table{$table}} ) { for my $chainref1 ( grep $_->{referenced}, values %{$chain_table{$table}} ) {
my $rules = $chainref->{rules}; next if $chainref eq $chainref1;
next if not @$rules; my $rules1 = $chainref1->{rules};
CHAIN: next if @$rules != @$rules1;
for my $chainref1 ( grep $_->{referenced}, values %{$chain_table{$table}} ) { next if $chainref1->{dont_delete};
next if $chainref eq $chainref1;
my $rules1 = $chainref1->{rules}; for ( my $i = 0; $i <= $#$rules; $i++ ) {
next if @$rules != @$rules1; next CHAIN unless $rules->[$i] eq $rules1->[$i];
next if $chainref1->{dont_delete};
for ( my $i = 0; $i <= $#$rules; $i++ ) {
next CHAIN unless $rules->[$i] eq $rules1->[$i];
}
replace_references1 $chainref1, $chainref->{name}, '';
$progress = 1;
} }
replace_references1 $chainref1, $chainref->{name}, '';
} }
} }
} }