Skip to content

Commit

Permalink
Replace a lot of SPBeginAlertSheet()s with the more concise SPOnewayA…
Browse files Browse the repository at this point in the history
…lertSheet()

This should also eliminate a few use-after-free crashes
  • Loading branch information
dmoagx committed Oct 20, 2015
1 parent e12e3e8 commit 5357fd1
Show file tree
Hide file tree
Showing 29 changed files with 432 additions and 273 deletions.
6 changes: 6 additions & 0 deletions Source/SPAlertSheets.h
Expand Up @@ -58,6 +58,12 @@ void SPBeginAlertSheet(
); );


void SPOnewayAlertSheet( void SPOnewayAlertSheet(
NSString *title,
NSWindow *docWindow,
NSString *msg
);

void SPOnewayAlertSheetWithStyle(
NSString *title, NSString *title,
NSString *defaultButton, NSString *defaultButton,
NSWindow *docWindow, NSWindow *docWindow,
Expand Down
13 changes: 12 additions & 1 deletion Source/SPAlertSheets.m
Expand Up @@ -143,6 +143,17 @@ + (void)beginWaitingAlertSheetWithTitle:(NSString *)title


@end @end


/**
* Shorthand for SPOnewayAlertSheetWithStyle() with defaultButton=nil and alertStyle=NSWarningAlertStyle
*/
void SPOnewayAlertSheet(
NSString *title,
NSWindow *docWindow,
NSString *msg)
{
SPOnewayAlertSheetWithStyle(title, nil, docWindow, msg, NSWarningAlertStyle);
}

/** /**
* A Send-and-forget variant for displaying alerts. * A Send-and-forget variant for displaying alerts.
* It will queue the alert on the main thread and *always* immediately return. * It will queue the alert on the main thread and *always* immediately return.
Expand All @@ -151,7 +162,7 @@ + (void)beginWaitingAlertSheetWithTitle:(NSString *)title
* If nil is passed as the button title it will be changed to @"OK". * If nil is passed as the button title it will be changed to @"OK".
* If nil is passed as the window NSAlert will be modal * If nil is passed as the window NSAlert will be modal
*/ */
void SPOnewayAlertSheet( void SPOnewayAlertSheetWithStyle(
NSString *title, NSString *title,
NSString *defaultButton, NSString *defaultButton,
NSWindow *docWindow, NSWindow *docWindow,
Expand Down
46 changes: 31 additions & 15 deletions Source/SPAppController.m
Expand Up @@ -851,8 +851,7 @@ - (void)handleEventWithURL:(NSURL*)url
} }
if(![status writeToFile:statusFileName atomically:YES encoding:NSUTF8StringEncoding error:nil]) { if(![status writeToFile:statusFileName atomically:YES encoding:NSUTF8StringEncoding error:nil]) {
NSBeep(); NSBeep();
SPBeginAlertSheet(NSLocalizedString(@"BASH Error", @"bash error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [self frontDocumentWindow], self, nil, nil, SPOnewayAlertSheet(NSLocalizedString(@"BASH Error", @"bash error"), [self frontDocumentWindow], NSLocalizedString(@"Status file for sequelpro url scheme command couldn't be written!", @"status file for sequelpro url scheme command couldn't be written error message"));
NSLocalizedString(@"Status file for sequelpro url scheme command couldn't be written!", @"status file for sequelpro url scheme command couldn't be written error message"));
} }
[result writeToFile:resultFileName atomically:YES encoding:NSUTF8StringEncoding error:nil]; [result writeToFile:resultFileName atomically:YES encoding:NSUTF8StringEncoding error:nil];
return; return;
Expand Down Expand Up @@ -897,8 +896,11 @@ - (void)handleEventWithURL:(NSURL*)url
BOOL succeed = [status writeToFile:statusFileName atomically:YES encoding:NSUTF8StringEncoding error:nil]; BOOL succeed = [status writeToFile:statusFileName atomically:YES encoding:NSUTF8StringEncoding error:nil];
if(!succeed) { if(!succeed) {
NSBeep(); NSBeep();
SPBeginAlertSheet(NSLocalizedString(@"BASH Error", @"bash error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [self frontDocumentWindow], self, nil, nil, SPOnewayAlertSheet(
NSLocalizedString(@"Status file for sequelpro url scheme command couldn't be written!", @"status file for sequelpro url scheme command couldn't be written error message")); NSLocalizedString(@"BASH Error", @"bash error"),
[self frontDocumentWindow],
NSLocalizedString(@"Status file for sequelpro url scheme command couldn't be written!", @"status file for sequelpro url scheme command couldn't be written error message")
);
} }
return; return;
} }
Expand Down Expand Up @@ -939,8 +941,11 @@ - (void)handleEventWithURL:(NSURL*)url
[cmdDict setObject:(passedProcessID)?:@"" forKey:@"id"]; [cmdDict setObject:(passedProcessID)?:@"" forKey:@"id"];
[processDocument handleSchemeCommand:cmdDict]; [processDocument handleSchemeCommand:cmdDict];
} else { } else {
SPBeginAlertSheet(NSLocalizedString(@"sequelpro URL Scheme Error", @"sequelpro url Scheme Error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [NSApp mainWindow], self, nil, nil, SPOnewayAlertSheet(
[NSString stringWithFormat:@"%@%@”:\n%@", NSLocalizedString(@"Error for", @"error for message"), [command description], NSLocalizedString(@"sequelpro URL scheme command not supported.", @"sequelpro URL scheme command not supported.")]); NSLocalizedString(@"sequelpro URL Scheme Error", @"sequelpro url Scheme Error"),
[NSApp mainWindow],
[NSString stringWithFormat:@"%@ “%@”:\n%@", NSLocalizedString(@"Error for", @"error for message"), [command description], NSLocalizedString(@"sequelpro URL scheme command not supported.", @"sequelpro URL scheme command not supported.")]
);


// If command failed notify the file handle hand shake mechanism // If command failed notify the file handle hand shake mechanism
NSString *out = @"1"; NSString *out = @"1";
Expand Down Expand Up @@ -980,9 +985,11 @@ - (void)handleEventWithURL:(NSURL*)url
encoding:NSUTF8StringEncoding encoding:NSUTF8StringEncoding
error:nil]; error:nil];


SPBeginAlertSheet(NSLocalizedString(@"sequelpro URL Scheme Error", @"sequelpro url Scheme Error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [NSApp mainWindow], self, nil, nil, SPOnewayAlertSheet(
[NSString stringWithFormat:@"%@%@”:\n%@", NSLocalizedString(@"Error for", @"error for message"), [command description], NSLocalizedString(@"An error for sequelpro URL scheme command occurred. Probably no corresponding connection window found.", @"An error for sequelpro URL scheme command occurred. Probably no corresponding connection window found.")]); NSLocalizedString(@"sequelpro URL Scheme Error", @"sequelpro url Scheme Error"),

[NSApp mainWindow],
[NSString stringWithFormat:@"%@ “%@”:\n%@", NSLocalizedString(@"Error for", @"error for message"), [command description], NSLocalizedString(@"An error for sequelpro URL scheme command occurred. Probably no corresponding connection window found.", @"An error for sequelpro URL scheme command occurred. Probably no corresponding connection window found.")]
);


usleep(5000); usleep(5000);
[fm removeItemAtPath:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultStatusPathHeader, passedProcessID] error:nil]; [fm removeItemAtPath:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultStatusPathHeader, passedProcessID] error:nil];
Expand All @@ -993,8 +1000,11 @@ - (void)handleEventWithURL:(NSURL*)url




} else { } else {
SPBeginAlertSheet(NSLocalizedString(@"sequelpro URL Scheme Error", @"sequelpro url Scheme Error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [NSApp mainWindow], self, nil, nil, SPOnewayAlertSheet(
[NSString stringWithFormat:@"%@%@”:\n%@", NSLocalizedString(@"Error for", @"error for message"), [command description], NSLocalizedString(@"An error occur while executing a scheme command. If the scheme command was invoked by a Bundle command, it could be that the command still runs. You can try to terminate it by pressing ⌘+. or via the Activities pane.", @"an error occur while executing a scheme command. if the scheme command was invoked by a bundle command, it could be that the command still runs. you can try to terminate it by pressing ⌘+. or via the activities pane.")]); NSLocalizedString(@"sequelpro URL Scheme Error", @"sequelpro url Scheme Error"),
[NSApp mainWindow],
[NSString stringWithFormat:@"%@ “%@”:\n%@", NSLocalizedString(@"Error for", @"error for message"), [command description], NSLocalizedString(@"An error occur while executing a scheme command. If the scheme command was invoked by a Bundle command, it could be that the command still runs. You can try to terminate it by pressing ⌘+. or via the Activities pane.", @"an error occur while executing a scheme command. if the scheme command was invoked by a bundle command, it could be that the command still runs. you can try to terminate it by pressing ⌘+. or via the activities pane.")]
);
} }


if(processDocument) if(processDocument)
Expand Down Expand Up @@ -1141,8 +1151,11 @@ - (IBAction)executeBundleItemForApp:(id)sender


if(inputFileError != nil) { if(inputFileError != nil) {
NSString *errorMessage = [inputFileError localizedDescription]; NSString *errorMessage = [inputFileError localizedDescription];
SPBeginAlertSheet(NSLocalizedString(@"Bundle Error", @"bundle error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [self frontDocumentWindow], self, nil, nil, SPOnewayAlertSheet(
[NSString stringWithFormat:@"%@%@”:\n%@", NSLocalizedString(@"Error for", @"error for message"), [cmdData objectForKey:@"name"], errorMessage]); NSLocalizedString(@"Bundle Error", @"bundle error"),
[self frontDocumentWindow],
[NSString stringWithFormat:@"%@ “%@”:\n%@", NSLocalizedString(@"Error for", @"error for message"), [cmdData objectForKey:@"name"], errorMessage]
);
if (cmdData) [cmdData release]; if (cmdData) [cmdData release];
return; return;
} }
Expand Down Expand Up @@ -1235,8 +1248,11 @@ - (IBAction)executeBundleItemForApp:(id)sender
} }
} else if([err code] != 9) { // Suppress an error message if command was killed } else if([err code] != 9) { // Suppress an error message if command was killed
NSString *errorMessage = [err localizedDescription]; NSString *errorMessage = [err localizedDescription];
SPBeginAlertSheet(NSLocalizedString(@"BASH Error", @"bash error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [NSApp mainWindow], self, nil, nil, SPOnewayAlertSheet(
[NSString stringWithFormat:@"%@%@”:\n%@", NSLocalizedString(@"Error for", @"error for message"), [cmdData objectForKey:@"name"], errorMessage]); NSLocalizedString(@"BASH Error", @"bash error"),
[NSApp mainWindow],
[NSString stringWithFormat:@"%@ “%@”:\n%@", NSLocalizedString(@"Error for", @"error for message"), [cmdData objectForKey:@"name"], errorMessage]
);
} }


} }
Expand Down
3 changes: 1 addition & 2 deletions Source/SPBundleHTMLOutputController.m
Expand Up @@ -191,8 +191,7 @@ - (void)sheetDidEnd:(id)sheet returnCode:(NSInteger)returnCode contextInfo:(NSSt
encoding:NSUTF8StringEncoding encoding:NSUTF8StringEncoding
error:&err]; error:&err];
if (err != nil) { if (err != nil) {
SPBeginAlertSheet(NSLocalizedString(@"Error", @"error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [self window], self, nil, nil, SPOnewayAlertSheet(NSLocalizedString(@"Error", @"error"), [self window], [NSString stringWithFormat:@"%@", [err localizedDescription]]);
[NSString stringWithFormat:@"%@", [err localizedDescription]]);
} }
} }
} }
Expand Down
54 changes: 41 additions & 13 deletions Source/SPConnectionController.m
Expand Up @@ -183,21 +183,33 @@ - (IBAction)initiateConnection:(id)sender


// Ensure that host is not empty if this is a TCP/IP or SSH connection // Ensure that host is not empty if this is a TCP/IP or SSH connection
if (([self type] == SPTCPIPConnection || [self type] == SPSSHTunnelConnection) && ![[self host] length]) { if (([self type] == SPTCPIPConnection || [self type] == SPSSHTunnelConnection) && ![[self host] length]) {
SPBeginAlertSheet(NSLocalizedString(@"Insufficient connection details", @"insufficient details message"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [dbDocument parentWindow], self, nil, nil, NSLocalizedString(@"Insufficient details provided to establish a connection. Please enter at least the hostname.", @"insufficient details informative message")); SPOnewayAlertSheet(
NSLocalizedString(@"Insufficient connection details", @"insufficient details message"),
[dbDocument parentWindow],
NSLocalizedString(@"Insufficient details provided to establish a connection. Please enter at least the hostname.", @"insufficient details informative message")
);
return; return;
} }


// If SSH is enabled, ensure that the SSH host is not nil // If SSH is enabled, ensure that the SSH host is not nil
if ([self type] == SPSSHTunnelConnection && ![[self sshHost] length]) { if ([self type] == SPSSHTunnelConnection && ![[self sshHost] length]) {
SPBeginAlertSheet(NSLocalizedString(@"Insufficient connection details", @"insufficient details message"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [dbDocument parentWindow], self, nil, nil, NSLocalizedString(@"Insufficient details provided to establish a connection. Please enter the hostname for the SSH Tunnel, or disable the SSH Tunnel.", @"insufficient SSH tunnel details informative message")); SPOnewayAlertSheet(
NSLocalizedString(@"Insufficient connection details", @"insufficient details message"),
[dbDocument parentWindow],
NSLocalizedString(@"Insufficient details provided to establish a connection. Please enter the hostname for the SSH Tunnel, or disable the SSH Tunnel.", @"insufficient SSH tunnel details informative message")
);
return; return;
} }


// If an SSH key has been provided, verify it exists // If an SSH key has been provided, verify it exists
if ([self type] == SPSSHTunnelConnection && sshKeyLocationEnabled && sshKeyLocation) { if ([self type] == SPSSHTunnelConnection && sshKeyLocationEnabled && sshKeyLocation) {
if (![[NSFileManager defaultManager] fileExistsAtPath:[sshKeyLocation stringByExpandingTildeInPath]]) { if (![[NSFileManager defaultManager] fileExistsAtPath:[sshKeyLocation stringByExpandingTildeInPath]]) {
[self setSshKeyLocationEnabled:NSOffState]; [self setSshKeyLocationEnabled:NSOffState];
SPBeginAlertSheet(NSLocalizedString(@"SSH Key not found", @"SSH key check error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [dbDocument parentWindow], self, nil, nil, NSLocalizedString(@"A SSH key location was specified, but no file was found in the specified location. Please re-select the key and try again.", @"SSH key not found message")); SPOnewayAlertSheet(
NSLocalizedString(@"SSH Key not found", @"SSH key check error"),
[dbDocument parentWindow],
NSLocalizedString(@"A SSH key location was specified, but no file was found in the specified location. Please re-select the key and try again.", @"SSH key not found message")
);
return; return;
} }
} }
Expand All @@ -214,7 +226,11 @@ - (IBAction)initiateConnection:(id)sender
[self setSslKeyFileLocationEnabled:NSOffState]; [self setSslKeyFileLocationEnabled:NSOffState];
[self setSslKeyFileLocation:nil]; [self setSslKeyFileLocation:nil];


SPBeginAlertSheet(NSLocalizedString(@"SSL Key File not found", @"SSL key file check error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [dbDocument parentWindow], self, nil, nil, NSLocalizedString(@"A SSL key file location was specified, but no file was found in the specified location. Please re-select the key file and try again.", @"SSL key file not found message")); SPOnewayAlertSheet(
NSLocalizedString(@"SSL Key File not found", @"SSL key file check error"),
[dbDocument parentWindow],
NSLocalizedString(@"A SSL key file location was specified, but no file was found in the specified location. Please re-select the key file and try again.", @"SSL key file not found message")
);


return; return;
} }
Expand All @@ -225,7 +241,11 @@ - (IBAction)initiateConnection:(id)sender
[self setSslCertificateFileLocationEnabled:NSOffState]; [self setSslCertificateFileLocationEnabled:NSOffState];
[self setSslCertificateFileLocation:nil]; [self setSslCertificateFileLocation:nil];


SPBeginAlertSheet(NSLocalizedString(@"SSL Certificate File not found", @"SSL certificate file check error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [dbDocument parentWindow], self, nil, nil, NSLocalizedString(@"A SSL certificate location was specified, but no file was found in the specified location. Please re-select the certificate and try again.", @"SSL certificate file not found message")); SPOnewayAlertSheet(
NSLocalizedString(@"SSL Certificate File not found", @"SSL certificate file check error"),
[dbDocument parentWindow],
NSLocalizedString(@"A SSL certificate location was specified, but no file was found in the specified location. Please re-select the certificate and try again.", @"SSL certificate file not found message")
);


return; return;
} }
Expand All @@ -236,7 +256,11 @@ - (IBAction)initiateConnection:(id)sender
[self setSslCACertFileLocationEnabled:NSOffState]; [self setSslCACertFileLocationEnabled:NSOffState];
[self setSslCACertFileLocation:nil]; [self setSslCACertFileLocation:nil];


SPBeginAlertSheet(NSLocalizedString(@"SSL Certificate Authority File not found", @"SSL certificate authority file check error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [dbDocument parentWindow], self, nil, nil, NSLocalizedString(@"A SSL Certificate Authority certificate location was specified, but no file was found in the specified location. Please re-select the Certificate Authority certificate and try again.", @"SSL CA certificate file not found message")); SPOnewayAlertSheet(
NSLocalizedString(@"SSL Certificate Authority File not found", @"SSL certificate authority file check error"),
[dbDocument parentWindow],
NSLocalizedString(@"A SSL Certificate Authority certificate location was specified, but no file was found in the specified location. Please re-select the Certificate Authority certificate and try again.", @"SSL CA certificate file not found message")
);


return; return;
} }
Expand Down Expand Up @@ -1224,17 +1248,21 @@ - (void)_saveCurrentDetailsCreatingNewFavorite:(BOOL)createNewFavorite validateD


// Ensure that host is not empty if this is a TCP/IP or SSH connection // Ensure that host is not empty if this is a TCP/IP or SSH connection
if (validateDetails && ([self type] == SPTCPIPConnection || [self type] == SPSSHTunnelConnection) && ![[self host] length]) { if (validateDetails && ([self type] == SPTCPIPConnection || [self type] == SPSSHTunnelConnection) && ![[self host] length]) {
SPBeginAlertSheet(NSLocalizedString(@"Insufficient connection details", @"insufficient details message"), SPOnewayAlertSheet(
NSLocalizedString(@"OK", @"OK button"), nil, nil, [dbDocument parentWindow], nil, nil, nil, NSLocalizedString(@"Insufficient connection details", @"insufficient details message"),
NSLocalizedString(@"Insufficient details provided to establish a connection. Please provide at least a host.", @"insufficient details informative message")); [dbDocument parentWindow],
NSLocalizedString(@"Insufficient details provided to establish a connection. Please provide at least a host.", @"insufficient details informative message")
);
return; return;
} }


// If SSH is enabled, ensure that the SSH host is not nil // If SSH is enabled, ensure that the SSH host is not nil
if (validateDetails && [self type] == SPSSHTunnelConnection && ![[self sshHost] length]) { if (validateDetails && [self type] == SPSSHTunnelConnection && ![[self sshHost] length]) {
SPBeginAlertSheet(NSLocalizedString(@"Insufficient connection details", @"insufficient details message"), SPOnewayAlertSheet(
NSLocalizedString(@"OK", @"OK button"), nil, nil, [dbDocument parentWindow], nil, nil, nil, NSLocalizedString(@"Insufficient connection details", @"insufficient details message"),
NSLocalizedString(@"Please enter the hostname for the SSH Tunnel, or disable the SSH Tunnel.", @"message of panel when ssh details are incomplete")); [dbDocument parentWindow],
NSLocalizedString(@"Please enter the hostname for the SSH Tunnel, or disable the SSH Tunnel.", @"message of panel when ssh details are incomplete")
);
return; return;
} }


Expand Down Expand Up @@ -1488,7 +1516,7 @@ - (BOOL)_checkHost
[dbDocument parentWindow], // Window to attach to [dbDocument parentWindow], // Window to attach to
self, // Modal delegate self, // Modal delegate
@selector(localhostErrorSheetDidEnd:returnCode:contextInfo:), // Did end selector @selector(localhostErrorSheetDidEnd:returnCode:contextInfo:), // Did end selector
nil, // Contextual info for selectors NULL, // Contextual info for selectors
NSLocalizedString(@"To MySQL, 'localhost' is a special host and means that a socket connection should be used.\n\nDid you mean to use a socket connection, or to connect to the local machine via a port? If you meant to connect via a port, '127.0.0.1' should be used instead of 'localhost'.", @"message of error when using 'localhost' for a network connection")); NSLocalizedString(@"To MySQL, 'localhost' is a special host and means that a socket connection should be used.\n\nDid you mean to use a socket connection, or to connect to the local machine via a port? If you meant to connect via a port, '127.0.0.1' should be used instead of 'localhost'.", @"message of error when using 'localhost' for a network connection"));
return NO; return NO;
} }
Expand Down
10 changes: 2 additions & 8 deletions Source/SPConnectionDelegate.m
Expand Up @@ -123,15 +123,9 @@ - (NSString *)keychainPasswordForSSHConnection:(SPMySQLConnection *)connection
*/ */
- (void)noConnectionAvailable:(id)connection - (void)noConnectionAvailable:(id)connection
{ {
SPBeginAlertSheet( SPOnewayAlertSheet(
NSLocalizedString(@"No connection available", @"no connection available message"), NSLocalizedString(@"No connection available", @"no connection available message"),
NSLocalizedString(@"OK", @"OK button"),
nil,
nil,
[self parentWindow], [self parentWindow],
self,
nil,
nil,
NSLocalizedString(@"An error has occured and there doesn't seem to be a connection available.", @"no connection available informatie message") NSLocalizedString(@"An error has occured and there doesn't seem to be a connection available.", @"no connection available informatie message")
); );
} }
Expand Down Expand Up @@ -176,7 +170,7 @@ - (SPMySQLConnectionLostDecision)connectionLost:(id)connection
- (void)showErrorWithTitle:(NSString *)theTitle message:(NSString *)theMessage - (void)showErrorWithTitle:(NSString *)theTitle message:(NSString *)theMessage
{ {
if ([[self parentWindow] isVisible]) { if ([[self parentWindow] isVisible]) {
SPBeginAlertSheet(theTitle, NSLocalizedString(@"OK", @"OK button"), nil, nil, [self parentWindow], self, nil, nil, theMessage); SPOnewayAlertSheet(theTitle, [self parentWindow], theMessage);
} }
} }


Expand Down
6 changes: 5 additions & 1 deletion Source/SPConnectionHandler.m
Expand Up @@ -353,7 +353,11 @@ - (void)mySQLConnectionEstablished
// If SSL was enabled, check it was established correctly // If SSL was enabled, check it was established correctly
if (useSSL && ([self type] == SPTCPIPConnection || [self type] == SPSocketConnection)) { if (useSSL && ([self type] == SPTCPIPConnection || [self type] == SPSocketConnection)) {
if (![mySQLConnection isConnectedViaSSL]) { if (![mySQLConnection isConnectedViaSSL]) {
SPBeginAlertSheet(NSLocalizedString(@"SSL connection not established", @"SSL requested but not used title"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [dbDocument parentWindow], nil, nil, nil, NSLocalizedString(@"You requested that the connection should be established using SSL, but MySQL made the connection without SSL.\n\nThis may be because the server does not support SSL connections, or has SSL disabled; or insufficient details were supplied to establish an SSL connection.\n\nThis connection is not encrypted.", @"SSL connection requested but not established error detail")); SPOnewayAlertSheet(
NSLocalizedString(@"SSL connection not established", @"SSL requested but not used title"),
[dbDocument parentWindow],
NSLocalizedString(@"You requested that the connection should be established using SSL, but MySQL made the connection without SSL.\n\nThis may be because the server does not support SSL connections, or has SSL disabled; or insufficient details were supplied to establish an SSL connection.\n\nThis connection is not encrypted.", @"SSL connection requested but not established error detail")
);
} }
else { else {
#ifndef SP_CODA #ifndef SP_CODA
Expand Down

0 comments on commit 5357fd1

Please sign in to comment.