#! @PERL@
-# Copyright (c) 2010 Zmanda, Inc. All Rights Reserved.
+# Copyright (c) 2010-2012 Zmanda, Inc. All Rights Reserved.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 as published
use Amanda::Debug qw( debug info warning );
use Amanda::MainLoop qw( :GIOCondition );
-use Amanda::Util qw( :constants );
+use Amanda::Util qw( :constants match_disk match_host );
use Amanda::Feature;
use Amanda::Config qw( :init :getconf );
use Amanda::Changer;
use Amanda::Recovery::Scan;
use Amanda::DB::Catalog;
use Amanda::Disklist;
-use Amanda::Logfile qw( match_disk match_host );
# Note that this class performs its control IO synchronously. This is adequate
# for this service, as it never receives unsolicited input from the remote
return Amanda::Recovery::Planner::make_plan(
filelist => $filelist,
+ chg => $chg,
$spec? (dumpspec => $spec) : (),
plan_cb => sub { $self->plan_cb(@_); });
}
if ($header->{'compressed'}) {
# need to uncompress this file
debug("..with decompression applied");
- my $dle = $header->get_dle();
if ($header->{'srvcompprog'}) {
# TODO: this assumes that srvcompprog takes "-d" to decrypt
$header->{'clntcompprog'} = '';
}
} else {
- if (!$self->{'their_features'}->has($Amanda::Feature::fe_amrecover_receive_unfiltered) ||
- $dle->{'compress'} == $Amanda::Config::COMP_SERVER_FAST ||
- $dle->{'compress'} == $Amanda::Config::COMP_SERVER_BEST) {
+ my $dle = $header->get_dle();
+ if ($dle &&
+ (!$self->{'their_features'}->has($Amanda::Feature::fe_amrecover_receive_unfiltered) ||
+ $dle->{'compress'} == $Amanda::Config::COMP_SERVER_FAST ||
+ $dle->{'compress'} == $Amanda::Config::COMP_SERVER_BEST)) {
push @filters,
Amanda::Xfer::Filter::Process->new(
[ $Amanda::Constants::UNCOMPRESS_PATH,
# filter out some things the remote might not be able to process
if (!$self->{'their_features'}->has($Amanda::Feature::fe_amrecover_dle_in_header)) {
$header->{'dle_str'} = undef;
+ } else {
+ $header->{'dle_str'} =
+ Amanda::Disklist::clean_dle_str_for_client($header->{'dle_str'},
+ Amanda::Feature::am_features($self->{'their_features'}));
}
if (!$self->{'their_features'}->has($Amanda::Feature::fe_amrecover_origsize_in_header)) {
$header->{'orig_size'} = 0;