diff options
author | rowanbeentje <rowan@beent.je> | 2012-11-28 02:09:13 +0000 |
---|---|---|
committer | rowanbeentje <rowan@beent.je> | 2012-11-28 02:09:13 +0000 |
commit | 585598dee1cc9f53e37ff47b5548bd034cdefee4 (patch) | |
tree | 9143fbb229aec7cc214b88845e0b2ab851209961 /Source | |
parent | a45f89fecc9314aab976f0a474d4bfd3358837b9 (diff) | |
download | sequelpro-585598dee1cc9f53e37ff47b5548bd034cdefee4.tar.gz sequelpro-585598dee1cc9f53e37ff47b5548bd034cdefee4.tar.bz2 sequelpro-585598dee1cc9f53e37ff47b5548bd034cdefee4.zip |
- Improve connection testing to use edited passwords on a connection with keychain entries
- Clean up connection error handling slightly
Diffstat (limited to 'Source')
-rw-r--r-- | Source/SPConnectionController.m | 15 | ||||
-rw-r--r-- | Source/SPConnectionHandler.m | 34 |
2 files changed, 17 insertions, 32 deletions
diff --git a/Source/SPConnectionController.m b/Source/SPConnectionController.m index 8cb08556..d1d7ba2f 100644 --- a/Source/SPConnectionController.m +++ b/Source/SPConnectionController.m @@ -1576,12 +1576,15 @@ static NSComparisonResult _compareFavoritesUsingKey(id favorite1, id favorite2, [progressIndicatorText setHidden:YES]; [progressIndicatorText display]; - // Update the password fields, restoring passwords that may have been bulletted out during connection - if (connectionKeychainItemName) { - [self setPassword:[keychain getPasswordForName:connectionKeychainItemName account:connectionKeychainItemAccount]]; - } - if (connectionSSHKeychainItemName) { - [self setSshPassword:[keychain getPasswordForName:connectionSSHKeychainItemName account:connectionSSHKeychainItemAccount]]; + // If not testing a connection,uUpdate the password fields, restoring passwords that may have + // been bulleted out during connection + if (!isTestingConnection) { + if (connectionKeychainItemName) { + [self setPassword:[keychain getPasswordForName:connectionKeychainItemName account:connectionKeychainItemAccount]]; + } + if (connectionSSHKeychainItemName) { + [self setSshPassword:[keychain getPasswordForName:connectionSSHKeychainItemName account:connectionSSHKeychainItemAccount]]; + } } // Re-enable favorites table view diff --git a/Source/SPConnectionHandler.m b/Source/SPConnectionHandler.m index d930a299..12b59b01 100644 --- a/Source/SPConnectionHandler.m +++ b/Source/SPConnectionHandler.m @@ -115,8 +115,9 @@ static NSString *SPLocalhostAddress = @"127.0.0.1"; } } - // Only set the password if there is no Keychain item set. The connection will ask the delegate for passwords in the Keychain. - if (!connectionKeychainItemName && [self password]) { + // Only set the password if there is no Keychain item set and the connection is not being tested. + // The connection will otherwise ask the delegate for passwords in the Keychain. + if ((!connectionKeychainItemName || isTestingConnection) && [self password]) { [mySQLConnection setPassword:[self password]]; } @@ -264,7 +265,7 @@ static NSString *SPLocalhostAddress = @"127.0.0.1"; [sshTunnel setParentWindow:[dbDocument parentWindow]]; // Add keychain or plaintext password as appropriate - note the checks in initiateConnection. - if (connectionSSHKeychainItemName) { + if (connectionSSHKeychainItemName && !isTestingConnection) { [sshTunnel setPasswordKeychainName:connectionSSHKeychainItemName account:connectionSSHKeychainItemAccount]; } else if (sshPassword) { [sshTunnel setPassword:[self sshPassword]]; @@ -377,9 +378,7 @@ static NSString *SPLocalhostAddress = @"127.0.0.1"; [dbDocument setTitlebarStatus:NSLocalizedString(@"SSH Disconnected", @"SSH disconnected titlebar marker")]; #endif - [self failConnectionWithTitle:NSLocalizedString(@"SSH connection failed!", @"SSH connection failed title") errorMessage:[theTunnel lastError] detail:[sshTunnel debugMessages] rawErrorText:[theTunnel lastError]]; - - [self _restoreConnectionInterface]; + [[self onMainThread] failConnectionWithTitle:NSLocalizedString(@"SSH connection failed!", @"SSH connection failed title") errorMessage:[theTunnel lastError] detail:[sshTunnel debugMessages] rawErrorText:[theTunnel lastError]]; } else if (newState == SPMySQLProxyConnected) { #ifndef SP_REFACTOR @@ -428,14 +427,7 @@ static NSString *SPLocalhostAddress = @"127.0.0.1"; BOOL isSSHTunnelBindError = NO; #ifndef SP_REFACTOR - // Clean up the interface - [progressIndicator stopAnimation:self]; - [progressIndicator display]; - [progressIndicatorText setHidden:YES]; - [progressIndicatorText display]; - [connectButton setEnabled:YES]; - [testConnectButton setEnabled:YES]; - [dbDocument clearStatusIcon]; + [self _restoreConnectionInterface]; #endif // Release as appropriate @@ -466,23 +458,13 @@ static NSString *SPLocalhostAddress = @"127.0.0.1"; * Alert sheet callback method - invoked when an error sheet is closed. */ - (void)connectionFailureSheetDidEnd:(NSAlert *)alert returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo -{ -#ifndef SP_REFACTOR - // Restore the passwords from keychain for editing if appropriate - if (connectionKeychainItemName) { - [self setPassword:[keychain getPasswordForName:connectionKeychainItemName account:connectionKeychainItemAccount]]; - } - - if (connectionSSHKeychainItemName) { - [self setSshPassword:[keychain getPasswordForName:connectionSSHKeychainItemName account:connectionSSHKeychainItemAccount]]; - } -#endif - +{ if (returnCode == NSAlertAlternateReturn) { [errorDetailText setFont:[NSFont userFontOfSize:12]]; [errorDetailText setAlignment:NSLeftTextAlignment]; [errorDetailWindow makeKeyAndOrderFront:self]; } + // Currently only SSH port bind errors offer a 3rd option in the error dialog, but if this ever changes // this will definitely need to be updated. else if (returnCode == NSAlertOtherReturn) { |