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 ]);
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) = @_;