diff options
author | Christopher Tate <ctate@google.com> | 2014-07-16 12:15:07 -0700 |
---|---|---|
committer | Christopher Tate <ctate@google.com> | 2014-07-16 13:10:58 -0700 |
commit | a176d22110a1670f363ba0f745f127d2b6ca2350 (patch) | |
tree | e29f8208c1d3de0773e7697f049e3a53f6ec8c8a /services/backup | |
parent | ac17c2a8c9ba85efdd35f0262d05a41554eb3775 (diff) | |
download | frameworks_base-a176d22110a1670f363ba0f745f127d2b6ca2350.zip frameworks_base-a176d22110a1670f363ba0f745f127d2b6ca2350.tar.gz frameworks_base-a176d22110a1670f363ba0f745f127d2b6ca2350.tar.bz2 |
Always call finishBackup() if performFullBackup() succeeded
Even if we later get an error from sendBackupData() we need to give
the transport its teardown callback. This simplifies the transport
logic considerably.
Change-Id: Ib8c0e210d4a876ee6b083a4d619dfccc462da4e5
Diffstat (limited to 'services/backup')
-rw-r--r-- | services/backup/java/com/android/server/backup/BackupManagerService.java | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java index c3a9dbe..e8e2813 100644 --- a/services/backup/java/com/android/server/backup/BackupManagerService.java +++ b/services/backup/java/com/android/server/backup/BackupManagerService.java @@ -3535,19 +3535,30 @@ public class BackupManagerService extends IBackupManager.Stub { } } while (nRead > 0 && result == BackupTransport.TRANSPORT_OK); - // Done -- how did it turn out? - if (result == BackupTransport.TRANSPORT_OK){ - result = transport.finishBackup(); - } else { - Slog.w(TAG, "Error backing up " + target.packageName); + // In all cases we need to give the transport its finish callback + int finishResult = transport.finishBackup(); + + // If we were otherwise in a good state, now interpret the final + // result based on what finishBackup() returned. If we're in a + // failure case already, preserve that result and ignore whatever + // finishBackup() reported. + if (result == BackupTransport.TRANSPORT_OK) { + result = finishResult; + } + + if (result != BackupTransport.TRANSPORT_OK) { + Slog.e(TAG, "Error " + result + + " backing up " + target.packageName); } - } else if (result == BackupTransport.TRANSPORT_PACKAGE_REJECTED) { + } + + if (result == BackupTransport.TRANSPORT_PACKAGE_REJECTED) { if (DEBUG) { Slog.i(TAG, "Transport rejected backup of " + target.packageName + ", skipping"); } // do nothing, clean up, and continue looping - } else { + } else if (result != BackupTransport.TRANSPORT_OK) { if (DEBUG) { Slog.i(TAG, "Transport failed; aborting backup"); return; |