Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de2826b1 authored by Christopher Tate's avatar Christopher Tate
Browse files

Properly set up local transport data dirs after an initialize operation

We were properly setting up the underlying storage at boot time, but
*not* doing so after an "initialize" operation, i.e. after wiping all
of the data upon request.  The effect was that after an init operation
while using the local transport (e.g. if you disabled backup and then
reenabled it with the local transport as your active one), full-data
backup operations wouldn't work until after the next reboot.

(Resubmit, with fixes, of earlier revert.)

Change-Id: I745cb49b5155119d63cff6fffad5230687faca71
parent 33dd7a46
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -84,7 +84,6 @@ public class LocalTransport extends BackupTransport {
    private File mRestoreSetDir;
    private File mRestoreSetIncrementalDir;
    private File mRestoreSetFullDir;
    private long mRestoreToken;

    // Additional bookkeeping for full backup
    private String mFullTargetPackage;
@@ -93,20 +92,22 @@ public class LocalTransport extends BackupTransport {
    private BufferedOutputStream mFullBackupOutputStream;
    private byte[] mFullBackupBuffer;

    private File mFullRestoreSetDir;
    private HashSet<String> mFullRestorePackages;
    private FileInputStream mCurFullRestoreStream;
    private FileOutputStream mFullRestoreSocketStream;
    private byte[] mFullRestoreBuffer;

    public LocalTransport(Context context) {
        mContext = context;
    private void makeDataDirs() {
        mCurrentSetDir.mkdirs();
        mCurrentSetFullDir.mkdir();
        mCurrentSetIncrementalDir.mkdir();
        if (!SELinux.restorecon(mCurrentSetDir)) {
            Log.e(TAG, "SELinux restorecon failed for " + mCurrentSetDir);
        }
        mCurrentSetFullDir.mkdir();
        mCurrentSetIncrementalDir.mkdir();
    }

    public LocalTransport(Context context) {
        mContext = context;
        makeDataDirs();
    }

    @Override
@@ -151,6 +152,7 @@ public class LocalTransport extends BackupTransport {
    public int initializeDevice() {
        if (DEBUG) Log.v(TAG, "wiping all data");
        deleteContents(mCurrentSetDir);
        makeDataDirs();
        return TRANSPORT_OK;
    }

@@ -425,7 +427,6 @@ public class LocalTransport extends BackupTransport {
                + " matching packages");
        mRestorePackages = packages;
        mRestorePackage = -1;
        mRestoreToken = token;
        mRestoreSetDir = new File(mDataDir, Long.toString(token));
        mRestoreSetIncrementalDir = new File(mRestoreSetDir, INCREMENTAL_DIR);
        mRestoreSetFullDir = new File(mRestoreSetDir, FULL_DATA_DIR);