X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=perl%2FAmanda%2FChanger%2Frait.pm;h=26486bc495ce99d5e9c0a92feccb55cf8e2b8e75;hb=cd0b924f27312d57bd42f6c4fae2b795139e2d0b;hp=5a8a0c9c99aef1086c4ef43d3713961b8cd7e55e;hpb=011a59f5a54864108a16af570a6b287410597cc2;p=debian%2Famanda diff --git a/perl/Amanda/Changer/rait.pm b/perl/Amanda/Changer/rait.pm index 5a8a0c9..26486bc 100644 --- a/perl/Amanda/Changer/rait.pm +++ b/perl/Amanda/Changer/rait.pm @@ -64,8 +64,12 @@ sub new { my @annotated_errs; for my $i (0 .. @children-1) { next unless $children[$i]->isa("Amanda::Changer::Error"); - push @annotated_errs, - [ $kidspecs[$i], $children[$i] ]; + if ($children[$i]->isa("Amanda::Changer::Error")) { + push @annotated_errs, + [ $kidspecs[$i], $children[$i] ]; + } elsif ($children[$i]->isa("Amanda::Changer")) { + $children[$i]->quit(); + } } return Amanda::Changer->make_combined_error( "fatal", [ @annotated_errs ]); @@ -81,6 +85,17 @@ sub new { return $self; } +sub quit { + my $self = shift; + + # quit each child + foreach my $child (@{$self->{'children'}}) { + $child->quit() if $child ne "ERROR"; + } + + $self->SUPER::quit(); +} + # private method to help handle slot input sub _kid_slots_ok { my ($self, $res_cb, $slot, $kid_slots_ref, $err_ref) = @_;