Imported Upstream version 3.3.0
[debian/amanda] / perl / Amanda / Changer / rait.pm
index 5a8a0c9c99aef1086c4ef43d3713961b8cd7e55e..26486bc495ce99d5e9c0a92feccb55cf8e2b8e75 100644 (file)
@@ -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) = @_;