diff --git a/qubes-rpc/qubes.Restore b/qubes-rpc/qubes.Restore index ab1f251..5db4fa8 100644 --- a/qubes-rpc/qubes.Restore +++ b/qubes-rpc/qubes.Restore @@ -20,9 +20,14 @@ else eval "set -- $args" # Use named pipe to pass original stdin to tar2file $@ > $tmpdir/backup-data < /dev/null & - retcode=$? /usr/lib/qubes/tar2qfile $tmpdir/backup-data $paths - wait + # Restoration may be terminated earlier because of selected files. This + # will be seen as EPIPE to the retrieving process, which may cause retcode + # other than 0 in some cases - which would be incorrectly treated as backup + # restore error. So instead of that, use tar2qfile exit code (and have dom0 + # detect if anything wrong with actual data) + retcode=$? + wait -n rm $tmpdir/backup-data rmdir $tmpdir exit $retcode