Bail if we can't build a database.

* Something is irrecoverably wrong at this point.
* Constantize error names

// FREEBIE
pull/1/head
Michael Kirk 9 years ago
parent f8bb46c46c
commit 5ccbd4ca6d

@ -8,7 +8,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = "SignalServiceKit" s.name = "SignalServiceKit"
s.version = "0.8.0" s.version = "0.8.1"
s.summary = "An Objective-C library for communicating with the Signal messaging service." s.summary = "An Objective-C library for communicating with the Signal messaging service."
s.description = <<-DESC s.description = <<-DESC

@ -18,6 +18,10 @@
NSString *const TSUIDatabaseConnectionDidUpdateNotification = @"TSUIDatabaseConnectionDidUpdateNotification"; NSString *const TSUIDatabaseConnectionDidUpdateNotification = @"TSUIDatabaseConnectionDidUpdateNotification";
NSString *const TSStorageManagerExceptionNameDatabasePasswordInaccessible = @"TSStorageManagerExceptionNameDatabasePasswordInaccessible";
NSString *const TSStorageManagerExceptionNameDatabasePasswordUnwritable = @"TSStorageManagerExceptionNameDatabasePasswordUnwritable";
NSString *const TSStorageManagerExceptionNameNoDatabase = @"TSStorageManagerExceptionNameNoDatabase";
static const NSString *const databaseName = @"Signal.sqlite"; static const NSString *const databaseName = @"Signal.sqlite";
static NSString *keychainService = @"TSKeyChainService"; static NSString *keychainService = @"TSKeyChainService";
static NSString *keychainDBPassAccount = @"TSDatabasePass"; static NSString *keychainDBPassAccount = @"TSDatabasePass";
@ -99,6 +103,10 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
serializer:NULL serializer:NULL
deserializer:[[self class] logOnFailureDeserializer] deserializer:[[self class] logOnFailureDeserializer]
options:options]; options:options];
if (!_database) {
DDLogError(@"%@ Failed to initialize database.", self.tag);
[NSException raise:TSStorageManagerExceptionNameNoDatabase format:@"Failed to initialize database."];
}
_dbConnection = self.newDatabaseConnection; _dbConnection = self.newDatabaseConnection;
return self; return self;
@ -249,8 +257,9 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
dbPassword = [self createAndSetNewDatabasePassword]; dbPassword = [self createAndSetNewDatabasePassword];
break; break;
default: default:
[NSException raise:@"Serious error when getting DB password from keychain." DDLogError(@"%@ Getting DB password from keychain failed with error: %@", self.tag, keyFetchError);
format:@"error: %@", keyFetchError]; [NSException raise:TSStorageManagerExceptionNameDatabasePasswordInaccessible
format:@"Getting DB password from keychain failed with error: %@", keyFetchError];
break; break;
} }
} }
@ -264,7 +273,9 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
NSError *keySetError; NSError *keySetError;
[SAMKeychain setPassword:newDBPassword forService:keychainService account:keychainDBPassAccount error:&keySetError]; [SAMKeychain setPassword:newDBPassword forService:keychainService account:keychainDBPassAccount error:&keySetError];
if (keySetError) { if (keySetError) {
[NSException raise:@"Error when setting DB password." format:@"error: %@", keySetError]; DDLogError(@"%@ Setting DB password failed with error: %@", self.tag, keySetError);
[NSException raise:TSStorageManagerExceptionNameDatabasePasswordUnwritable
format:@"Setting DB password failed with error: %@", keySetError];
} else { } else {
DDLogError(@"Succesfully set new DB password. First launch?"); DDLogError(@"Succesfully set new DB password. First launch?");
} }

Loading…
Cancel
Save