Updated Branches: refs/heads/master bd9953703 -> 7bc06d59f
[CB-3514] Remove partially-downloaded files when FileTransfer fails Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/7bc06d59 Tree: http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/7bc06d59 Diff: http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/7bc06d59 Branch: refs/heads/master Commit: 7bc06d59fb30bc56b6b824c7374d2e5b7f62dda7 Parents: bd99537 Author: Ian Clelland <[email protected]> Authored: Fri May 24 23:34:26 2013 -0400 Committer: Ian Clelland <[email protected]> Committed: Fri May 24 23:41:48 2013 -0400 ---------------------------------------------------------------------- CordovaLib/Classes/CDVFileTransfer.h | 1 + CordovaLib/Classes/CDVFileTransfer.m | 28 +++++++++++++++++----------- 2 files changed, 18 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/7bc06d59/CordovaLib/Classes/CDVFileTransfer.h ---------------------------------------------------------------------- diff --git a/CordovaLib/Classes/CDVFileTransfer.h b/CordovaLib/Classes/CDVFileTransfer.h index 233a114..35e3fdd 100644 --- a/CordovaLib/Classes/CDVFileTransfer.h +++ b/CordovaLib/Classes/CDVFileTransfer.h @@ -61,6 +61,7 @@ extern NSString* const kOptionsKeyCookie; @interface CDVFileTransferDelegate : NSObject {} - (void)updateBytesExpected:(NSInteger)newBytesExpected; +- (void)cancelTransfer:(NSURLConnection*)connection; @property (strong) NSMutableData* responseData; // atomic @property (nonatomic, strong) CDVFileTransfer* command; http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/7bc06d59/CordovaLib/Classes/CDVFileTransfer.m ---------------------------------------------------------------------- diff --git a/CordovaLib/Classes/CDVFileTransfer.m b/CordovaLib/Classes/CDVFileTransfer.m index 8391b3b..0f6b174 100644 --- a/CordovaLib/Classes/CDVFileTransfer.m +++ b/CordovaLib/Classes/CDVFileTransfer.m @@ -348,13 +348,7 @@ static CFIndex WriteDataToStream(NSData* data, CFWriteStreamRef stream) CDVFileTransferDelegate* delegate = [activeTransfers objectForKey:objectId]; if (delegate != nil) { - [delegate.connection cancel]; - [activeTransfers removeObjectForKey:objectId]; - - // delete uncomplete file - NSFileManager* fileMgr = [NSFileManager defaultManager]; - [fileMgr removeItemAtPath:delegate.target error:nil]; - + [delegate cancelTransfer:delegate.connection]; CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsDictionary:[self createFileTransferError:CONNECTION_ABORTED AndSource:delegate.source AndTarget:delegate.target]]; [self.commandDelegate sendPluginResult:result callbackId:delegate.callbackId]; } @@ -570,13 +564,26 @@ static CFIndex WriteDataToStream(NSData* data, CFWriteStreamRef stream) self.command.backgroundTaskID = UIBackgroundTaskInvalid; } +- (void)removeTargetFile +{ + NSFileManager* fileMgr = [NSFileManager defaultManager]; + + [fileMgr removeItemAtPath:self.target error:nil]; +} + +- (void)cancelTransfer:(NSURLConnection*)connection +{ + [connection cancel]; + [self.command.activeTransfers removeObjectForKey:self.objectId]; + [self removeTargetFile]; +} + - (void)cancelTransferWithError:(NSURLConnection*)connection errorMessage:(NSString*)errorMessage { CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_IO_EXCEPTION messageAsDictionary:[self.command createFileTransferError:FILE_NOT_FOUND_ERR AndSource:self.source AndTarget:self.target AndHttpStatus:self.responseCode AndBody:errorMessage]]; NSLog(@"File Transfer Error: %@", errorMessage); - [connection cancel]; - [self.command.activeTransfers removeObjectForKey:self.objectId]; + [self cancelTransfer:connection]; [self.command.commandDelegate sendPluginResult:result callbackId:callbackId]; } @@ -641,8 +648,7 @@ static CFIndex WriteDataToStream(NSData* data, CFWriteStreamRef stream) NSLog(@"File Transfer Error: %@", [error localizedDescription]); - // remove connection for activeTransfers - [command.activeTransfers removeObjectForKey:objectId]; + [self cancelTransfer:connection]; [self.command.commandDelegate sendPluginResult:result callbackId:callbackId]; }
