adium-1.4 3270:f3540daa81d8: Merge changes on top of 1.4.1 back ...

commits at adium.im commits at adium.im
Tue Nov 16 09:53:53 UTC 2010


details:	http://hg.adium.im/adium-1.4/rev/f3540daa81d8
revision:	3270:f3540daa81d8
author:		Colin Barrett <colin at springsandstruts.com>
date:		Tue Nov 16 01:52:41 2010 -0800

Merge changes on top of 1.4.1 back in to the 1.4.2hg head.

diffs (truncated from 2309 to 1000 lines):

diff -r b210771b9121 -r f3540daa81d8 Adium.xcodeproj/project.pbxproj
--- a/Adium.xcodeproj/project.pbxproj	Tue Nov 16 00:02:03 2010 -0500
+++ b/Adium.xcodeproj/project.pbxproj	Tue Nov 16 01:52:41 2010 -0800
@@ -1440,7 +1440,7 @@
 		7E824CE106387FAF00813072 /* SHAutoValidatingTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E824CD206387FAF00813072 /* SHAutoValidatingTextView.m */; };
 		7E824CE306387FAF00813072 /* SHLinkEditorWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E824CD406387FAF00813072 /* SHLinkEditorWindowController.m */; };
 		7E824CEB06387FAF00813072 /* SHLinkManagementPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E824CDC06387FAF00813072 /* SHLinkManagementPlugin.m */; };
-		811033510CDE170B00EC6038 /* ssl-cdsa.c in Sources */ = {isa = PBXBuildFile; fileRef = 811033500CDE170B00EC6038 /* ssl-cdsa.c */; };
+		811033510CDE170B00EC6038 /* ssl-cdsa.m in Sources */ = {isa = PBXBuildFile; fileRef = 811033500CDE170B00EC6038 /* ssl-cdsa.m */; };
 		811034050CDE216F00EC6038 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 340C1ABE0BD58FAB00D09235 /* Security.framework */; };
 		811035180CDE783800EC6038 /* SecurityInterface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 811035170CDE783800EC6038 /* SecurityInterface.framework */; };
 		811036180CDE8A2500EC6038 /* AIPurpleCertificateViewer.h in Headers */ = {isa = PBXBuildFile; fileRef = 811036160CDE8A2500EC6038 /* AIPurpleCertificateViewer.h */; };
@@ -4699,7 +4699,7 @@
 		7E824CD406387FAF00813072 /* SHLinkEditorWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = SHLinkEditorWindowController.m; sourceTree = "<group>"; };
 		7E824CDB06387FAF00813072 /* SHLinkManagementPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SHLinkManagementPlugin.h; sourceTree = "<group>"; };
 		7E824CDC06387FAF00813072 /* SHLinkManagementPlugin.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = SHLinkManagementPlugin.m; sourceTree = "<group>"; };
-		811033500CDE170B00EC6038 /* ssl-cdsa.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "ssl-cdsa.c"; sourceTree = "<group>"; };
+		811033500CDE170B00EC6038 /* ssl-cdsa.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ssl-cdsa.m"; sourceTree = "<group>"; };
 		811035170CDE783800EC6038 /* SecurityInterface.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SecurityInterface.framework; path = /System/Library/Frameworks/SecurityInterface.framework; sourceTree = "<absolute>"; };
 		811036160CDE8A2500EC6038 /* AIPurpleCertificateViewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIPurpleCertificateViewer.h; path = "Plugins/Purple Service/AIPurpleCertificateViewer.h"; sourceTree = "<group>"; };
 		811036170CDE8A2500EC6038 /* AIPurpleCertificateViewer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIPurpleCertificateViewer.m; path = "Plugins/Purple Service/AIPurpleCertificateViewer.m"; sourceTree = "<group>"; };
@@ -5091,7 +5091,7 @@
 			children = (
 				11EE1B490CDCFAF40097F246 /* oscar-adium.c */,
 				11EE1B4A0CDCFAF40097F246 /* oscar-adium.h */,
-				811033500CDE170B00EC6038 /* ssl-cdsa.c */,
+				811033500CDE170B00EC6038 /* ssl-cdsa.m */,
 				11EE1B4B0CDCFAF40097F246 /* ssl-openssl.c */,
 				11EE1B4C0CDCFAF40097F246 /* ssl.c */,
 			);
@@ -9529,7 +9529,6 @@
 			};
 			buildConfigurationList = DADE8E3A085507450062B664 /* Build configuration list for PBXProject "Adium" */;
 			compatibilityVersion = "Xcode 3.1";
-			developmentRegion = English;
 			hasScannedForEncodings = 1;
 			knownRegions = (
 				en,
@@ -10294,7 +10293,7 @@
 				11EE1B4D0CDCFAF40097F246 /* oscar-adium.c in Sources */,
 				11EE1B4F0CDCFAF40097F246 /* ssl-openssl.c in Sources */,
 				11EE1B500CDCFAF40097F246 /* ssl.c in Sources */,
-				811033510CDE170B00EC6038 /* ssl-cdsa.c in Sources */,
+				811033510CDE170B00EC6038 /* ssl-cdsa.m in Sources */,
 				811036190CDE8A2500EC6038 /* AIPurpleCertificateViewer.m in Sources */,
 				811036260CDE8C2100EC6038 /* adiumPurpleCertificateTrustWarning.m in Sources */,
 				8110362D0CDE8F5800EC6038 /* AIPurpleCertificateTrustWarningAlert.m in Sources */,
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/af/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/af/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/am/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/am/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/ar/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/ar/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/az/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/az/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/bg/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/bg/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/bn/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/bn/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/bs/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/bs/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/dz/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/dz/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/el/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/el/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/eo/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/eo/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/et/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/et/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/eu/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/eu/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/fa/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/fa/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/ga/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/ga/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/gl/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/gl/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/gu/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/gu/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/he/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/he/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/hi/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/hi/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/hy/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/hy/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/id/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/id/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/ka/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/ka/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/km/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/km/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/kn/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/kn/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/ko/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/ko/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/ku/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/ku/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/lo/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/lo/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/lt/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/lt/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/mk/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/mk/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/mn/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/mn/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/mr/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/mr/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/ms_MY/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/ms_MY/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/my_MM/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/my_MM/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/ne/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/ne/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/nn/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/nn/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/oc/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/oc/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/or/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/or/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/pa/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/pa/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/ps/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/ps/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/ro/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/ro/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/si/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/si/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/sq/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/sq/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/sr/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/sr/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/sw/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/sw/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/ta/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/ta/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/te/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/te/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/th/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/th/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/ur/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/ur/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/vi/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/vi/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/xh/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/xh/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Frameworks/libpurple.framework/Versions/0/Resources/zh_HK/LC_MESSAGES/pidgin.mo
Binary file Frameworks/libpurple.framework/Versions/0/Resources/zh_HK/LC_MESSAGES/pidgin.mo has changed
diff -r b210771b9121 -r f3540daa81d8 Plists/Info.plist
--- a/Plists/Info.plist	Tue Nov 16 00:02:03 2010 -0500
+++ b/Plists/Info.plist	Tue Nov 16 01:52:41 2010 -0800
@@ -469,7 +469,11 @@
 		</dict>
 	</array>
 	<key>CFBundleVersion</key>
+<<<<<<< local
 	<string>1.4.2hg</string>
+=======
+	<string>1.4.1</string>
+>>>>>>> other
 	<key>LSMinimumSystemVersion</key>
 	<string>10.5.8</string>
 	<key>LSRequiresNativeExecution</key>
diff -r b210771b9121 -r f3540daa81d8 Plugins/Purple Service/CBPurpleAccount.h
--- a/Plugins/Purple Service/CBPurpleAccount.h	Tue Nov 16 00:02:03 2010 -0500
+++ b/Plugins/Purple Service/CBPurpleAccount.h	Tue Nov 16 01:52:41 2010 -0800
@@ -214,3 +214,7 @@
 - (void)chat:(AIChat *)inChat closedCustomEmoticon:(NSString *)inEmoticon;
 
 @end
+
+ at interface CBPurpleAccount (ForSubclasses)
+- (void)continueConnectWithConfiguredPurpleAccoun;
+ at end
diff -r b210771b9121 -r f3540daa81d8 Plugins/Purple Service/ESPurpleICQAccount.m
--- a/Plugins/Purple Service/ESPurpleICQAccount.m	Tue Nov 16 00:02:03 2010 -0500
+++ b/Plugins/Purple Service/ESPurpleICQAccount.m	Tue Nov 16 01:52:41 2010 -0800
@@ -29,8 +29,11 @@
 
 - (void)initAccount
 {
-	if ([[self preferenceForKey:KEY_CONNECT_HOST group:GROUP_ACCOUNT_STATUS] caseInsensitiveCompare:@"login.oscar.aol.com"] == NSOrderedSame) {
-		/* Reset to the default if we're set to the old AOL login server */
+	if (([[self preferenceForKey:KEY_CONNECT_HOST group:GROUP_ACCOUNT_STATUS] caseInsensitiveCompare:@"login.oscar.aol.com"] == NSOrderedSame) ||
+		([[self preferenceForKey:KEY_CONNECT_HOST group:GROUP_ACCOUNT_STATUS] caseInsensitiveCompare:@"slogin.oscar.aol.com"] == NSOrderedSame) ||
+		([[self preferenceForKey:KEY_CONNECT_HOST group:GROUP_ACCOUNT_STATUS] caseInsensitiveCompare:@"slogin.icq.com"] == NSOrderedSame)) {
+		/* Reset to the default if we're set to the old AOL login server or its ssl variant.
+		 * Reset to the default if we're set to use the ICQ SSL server, as it's currently broken. */
 		[self setPreference:nil
 					 forKey:KEY_CONNECT_HOST
 					  group:GROUP_ACCOUNT_STATUS];
@@ -55,6 +58,32 @@
 	
 	//Defaults to NO - web_aware will cause lots of spam for many users!
 	purple_account_set_bool(account, "web_aware", [[self preferenceForKey:KEY_ICQ_WEB_AWARE group:GROUP_ACCOUNT_STATUS] boolValue]);
+
+#warning Remove when ICQ SSL support is fixed
+	purple_account_set_bool(account, "use_ssl", NO);
+}
+
+- (void)continueConnectWithConfiguredPurpleAccount
+{
+	if ([[self preferenceForKey:PREFERENCE_SSL_CONNECTION
+						  group:GROUP_ACCOUNT_STATUS] boolValue]) {
+		NSInteger ret = NSRunCriticalAlertPanel(@"Secure Connection to ICQ Not Available",
+												 @"Due to recent changes with the ICQ service, SSL connections to ICQ are not currently supported. Do you want to disable SSL and connect without encryption?",
+												 @"Connect Without Encryption",
+												 @"Disable Account",
+												 nil);
+		
+		if (ret == NSAlertDefaultReturn) {
+			[self setPreference:nil
+						 forKey:PREFERENCE_SSL_CONNECTION
+						  group:GROUP_ACCOUNT_STATUS];
+			[super continueConnectWithConfiguredPurpleAccount];
+		} else {
+			[self setEnabled:NO];
+		}
+	} else {
+		[super continueConnectWithConfiguredPurpleAccount];	
+	}
 }
 
 #pragma mark Contact updates
diff -r b210771b9121 -r f3540daa81d8 Plugins/Purple Service/ESPurpleICQAccountViewController.m
--- a/Plugins/Purple Service/ESPurpleICQAccountViewController.m	Tue Nov 16 00:02:03 2010 -0500
+++ b/Plugins/Purple Service/ESPurpleICQAccountViewController.m	Tue Nov 16 01:52:41 2010 -0800
@@ -32,6 +32,7 @@
 	[popUp_encoding setMenu:[self encodingMenu]];
 }
 
+
 //Configure controls
 - (void)configureForAccount:(AIAccount *)inAccount
 {
@@ -40,6 +41,10 @@
 																		group:GROUP_ACCOUNT_STATUS]];
 	[checkBox_webAware setState:[[account preferenceForKey:KEY_ICQ_WEB_AWARE
 													 group:GROUP_ACCOUNT_STATUS] boolValue]];
+
+#warning Remove when ICQ SSL support is fixed
+	[checkBox_SSL setState:NO];
+	[checkBox_SSL setEnabled:NO];
 }
 
 //Save controls
diff -r b210771b9121 -r f3540daa81d8 Plugins/Purple Service/ESPurpleJabberAccount.m
--- a/Plugins/Purple Service/ESPurpleJabberAccount.m	Tue Nov 16 00:02:03 2010 -0500
+++ b/Plugins/Purple Service/ESPurpleJabberAccount.m	Tue Nov 16 01:52:41 2010 -0800
@@ -162,10 +162,10 @@
 	forceOldSSL = [[self preferenceForKey:KEY_JABBER_FORCE_OLD_SSL group:GROUP_ACCOUNT_STATUS] boolValue];
 	requireTLS = [[self preferenceForKey:KEY_JABBER_REQUIRE_TLS group:GROUP_ACCOUNT_STATUS] boolValue];
 	
-	if (requireTLS)
+	if (forceOldSSL)
+		connectionSecurity = "old_ssl";
+	else if (requireTLS)
 		connectionSecurity = "require_tls";
-	else if (forceOldSSL)
-		connectionSecurity = "old_ssl";
 	else 
 		connectionSecurity = "opportunistic_tls";
 
diff -r b210771b9121 -r f3540daa81d8 Plugins/Purple Service/SLPurpleCocoaAdapter.m
--- a/Plugins/Purple Service/SLPurpleCocoaAdapter.m	Tue Nov 16 00:02:03 2010 -0500
+++ b/Plugins/Purple Service/SLPurpleCocoaAdapter.m	Tue Nov 16 01:52:41 2010 -0800
@@ -165,7 +165,7 @@
 
 - (void)debugLoggingIsEnabledDidChange:(NSNotification *)inNotification
 {
-	purple_debug_set_enabled(AIDebugLoggingIsEnabled());
+	configurePurpleDebugLogging();
 }
 
 - (void)initLibPurple
diff -r b210771b9121 -r f3540daa81d8 Plugins/Purple Service/adiumPurpleCore.h
--- a/Plugins/Purple Service/adiumPurpleCore.h	Tue Nov 16 00:02:03 2010 -0500
+++ b/Plugins/Purple Service/adiumPurpleCore.h	Tue Nov 16 01:52:41 2010 -0800
@@ -17,3 +17,5 @@
 #import <AdiumLibpurple/SLPurpleCocoaAdapter.h>
 
 PurpleCoreUiOps *adium_purple_core_get_ops(void);
+
+void configurePurpleDebugLogging();
diff -r b210771b9121 -r f3540daa81d8 Plugins/Purple Service/adiumPurpleCore.m
--- a/Plugins/Purple Service/adiumPurpleCore.m	Tue Nov 16 00:02:03 2010 -0500
+++ b/Plugins/Purple Service/adiumPurpleCore.m	Tue Nov 16 01:52:41 2010 -0800
@@ -132,12 +132,17 @@
 	purple_buddy_icons_set_caching(TRUE);	
 }
 
+void configurePurpleDebugLogging()
+{
+	purple_debug_set_ui_ops(AIDebugLoggingIsEnabled() ?
+							adium_purple_debug_get_ui_ops() :
+							NULL);
+}
+
 static void adiumPurpleCoreDebugInit(void)
 {
-	AILog(@"adiumPurpleCoreDebugInit()");
-    purple_debug_set_ui_ops(adium_purple_debug_get_ui_ops());
-
-	purple_debug_set_enabled(AIDebugLoggingIsEnabled());
+	AILogWithSignature(@"");
+	configurePurpleDebugLogging();
 }
 
 static void associateLibpurpleAccounts(void)
diff -r b210771b9121 -r f3540daa81d8 Plugins/Purple Service/libpurple_extensions/ssl-cdsa.c
--- a/Plugins/Purple Service/libpurple_extensions/ssl-cdsa.c	Tue Nov 16 00:02:03 2010 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,635 +0,0 @@
-/*
- * CDSA SSL-plugin for purple
- *
- * Copyright (c) 2007 Andreas Monitzer <andy at monitzer.com>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#import <libpurple/internal.h>
-#import <libpurple/debug.h>
-#import <libpurple/plugin.h>
-#import <libpurple/sslconn.h>
-#import <libpurple/version.h>
-#import <libpurple/signals.h>
-
-#define SSL_CDSA_PLUGIN_ID "ssl-cdsa"
-
-#ifdef HAVE_CDSA
-
-//#define CDSA_DEBUG
-
-#import <Security/Security.h>
-#import <unistd.h>
-
-typedef struct
-{
-	SSLContextRef	ssl_ctx;
-	guint	handshake_handler;
-} PurpleSslCDSAData;
-
-static GList *connections = NULL;
-
-#define PURPLE_SSL_CDSA_DATA(gsc) ((PurpleSslCDSAData *)gsc->private_data)
-#define PURPLE_SSL_CONNECTION_IS_VALID(gsc) (g_list_find(connections, (gsc)) != NULL)
-
-/*
- * query_cert_chain - callback for letting the user review the certificate before accepting it
- *
- * gsc: The secure connection used
- * err: one of the following:
- *  errSSLUnknownRootCert—The peer has a valid certificate chain, but the root of the chain is not a known anchor certificate.
- *  errSSLNoRootCert—The peer's certificate chain was not verifiable to a root certificate.
- *  errSSLCertExpired—The peer's certificate chain has one or more expired certificates.
- *  errSSLXCertChainInvalid—The peer has an invalid certificate chain; for example, signature verification within the chain failed, or no certificates were found.
- * hostname: The name of the host to be verified (for display purposes)
- * certs: an array of values of type SecCertificateRef representing the peer certificate and the certificate chain used to validate it. The certificate at index 0 of the returned array is the peer certificate; the root certificate (or the closest certificate to it) is at the end of the returned array.
- * accept_cert: the callback to be called when the user chooses to trust this certificate chain
- * reject_cert: the callback to be called when the user does not trust this certificate chain
- * userdata: opaque pointer which has to be passed to the callbacks
- */
-typedef
-void (*query_cert_chain)(PurpleSslConnection *gsc, const char *hostname, CFArrayRef certs, void (*query_cert_cb)(gboolean trusted, void *userdata), void *userdata);
-
-static query_cert_chain certificate_ui_cb = NULL;
-
-/*
- * ssl_cdsa_init
- */
-static gboolean
-ssl_cdsa_init(void)
-{
-	return (TRUE);
-}
-
-/*
- * ssl_cdsa_uninit
- */
-static void
-ssl_cdsa_uninit(void)
-{
-}
-
-struct query_cert_userdata {
-	CFArrayRef certs;
-	char *hostname;
-	PurpleSslConnection *gsc;
-	PurpleInputCondition cond;
-};
-
-static void ssl_cdsa_close(PurpleSslConnection *gsc);
-
-static void query_cert_result(gboolean trusted, void *userdata) {
-	struct query_cert_userdata *ud = (struct query_cert_userdata*)userdata;
-	PurpleSslConnection *gsc = (PurpleSslConnection *)ud->gsc;
-	
-	CFRelease(ud->certs);
-	free(ud->hostname);
-
-	if (PURPLE_SSL_CONNECTION_IS_VALID(gsc)) {
-		if (!trusted) {
-			if (gsc->error_cb != NULL)
-				gsc->error_cb(gsc, PURPLE_SSL_CERTIFICATE_INVALID,
-							  gsc->connect_cb_data);
-			
-			purple_ssl_close(ud->gsc);
-		} else {
-			purple_debug_info("cdsa", "SSL_connect complete\n");
-			
-			/* SSL connected now */
-			ud->gsc->connect_cb(ud->gsc->connect_cb_data, ud->gsc, ud->cond);
-		}
-	}
-
-	free(ud);
-}
-
-/*
- * ssl_cdsa_handshake_cb
- */
-static void
-ssl_cdsa_handshake_cb(gpointer data, gint source, PurpleInputCondition cond)
-{
-	PurpleSslConnection *gsc = (PurpleSslConnection *)data;
-	PurpleSslCDSAData *cdsa_data = PURPLE_SSL_CDSA_DATA(gsc);
-    OSStatus err;
-	
-	purple_debug_info("cdsa", "Connecting\n");
-	
-	/*
-	 * do the negotiation that sets up the SSL connection between
-	 * here and there.
-	 */
-	err = SSLHandshake(cdsa_data->ssl_ctx);
-	if(err != noErr) {
-		if(err == errSSLWouldBlock)
-			return;
-		fprintf(stderr,"cdsa: SSLHandshake failed with error %d\n",(int)err);
-		purple_debug_error("cdsa", "SSLHandshake failed with error %d\n",(int)err);
-		if (gsc->error_cb != NULL)
-			gsc->error_cb(gsc, PURPLE_SSL_HANDSHAKE_FAILED,
-						  gsc->connect_cb_data);
-		
-		purple_ssl_close(gsc);
-		return;
-	}
-		
-	purple_input_remove(cdsa_data->handshake_handler);
-	cdsa_data->handshake_handler = 0;
-	
-	purple_debug_info("cdsa", "SSL_connect: verifying certificate\n");
-	
-	if(certificate_ui_cb) { // does the application want to verify the certificate?
-		struct query_cert_userdata *userdata = (struct query_cert_userdata*)malloc(sizeof(struct query_cert_userdata));
-		size_t hostnamelen = 0;
-		
-		SSLGetPeerDomainNameLength(cdsa_data->ssl_ctx, &hostnamelen);
-		userdata->hostname = (char*)malloc(hostnamelen+1);
-		SSLGetPeerDomainName(cdsa_data->ssl_ctx, userdata->hostname, &hostnamelen);
-		userdata->hostname[hostnamelen] = '\0'; // just make sure it's zero-terminated
-		userdata->cond = cond;
-		userdata->gsc = gsc;
-		SSLCopyPeerCertificates(cdsa_data->ssl_ctx, &userdata->certs);
-		
-		certificate_ui_cb(gsc, userdata->hostname, userdata->certs, query_cert_result, userdata);
-	} else {
-		purple_debug_info("cdsa", "SSL_connect complete (did not verify certificate)\n");
-		
-		/* SSL connected now */
-		gsc->connect_cb(gsc->connect_cb_data, gsc, cond);
-	}
-}
-
-/*
- * R/W. Called out from SSL.
- */
-static OSStatus SocketRead(
-                    SSLConnectionRef   connection,
-                    void         *data,       /* owned by 
-                                               * caller, data
-                                               * RETURNED */
-                    size_t         *dataLength)  /* IN/OUT */ 
-                    {
-    UInt32      bytesToGo = *dataLength;
-    UInt32       initLen = bytesToGo;
-    UInt8      *currData = (UInt8 *)data;
-    int        sock = (int)connection;
-    OSStatus    rtn = noErr;
-    UInt32      bytesRead;
-    int        rrtn;
-    
-    *dataLength = 0;
-    
-    for(;;) {
-        bytesRead = 0;
-        rrtn = read(sock, currData, bytesToGo);
-        if (rrtn <= 0) {
-            /* this is guesswork... */
-            int theErr = errno;
-            switch(theErr) {
-                case ENOENT:
-                    /* connection closed */
-                    rtn = errSSLClosedGraceful; 
-                    break;
-                case ECONNRESET:
-                    rtn = errSSLClosedAbort;
-                    break;
-                case EAGAIN:
-                    rtn = errSSLWouldBlock;
-                    break;
-                default:
-                    fprintf(stderr,"SocketRead: read(%d) error %d\n", 
-                             (int)bytesToGo, theErr);
-                    rtn = errSSLFatalAlert;
-                    break;
-            }
-            break;
-        }
-        else {
-            bytesRead = rrtn;
-        }
-        bytesToGo -= bytesRead;
-        currData  += bytesRead;
-        
-        if(bytesToGo == 0) {
-            /* filled buffer with incoming data, done */
-            break;
-        }
-    }
-    *dataLength = initLen - bytesToGo;
-    if(rtn != noErr && rtn != errSSLWouldBlock)
-        fprintf(stderr,"SocketRead err = %d\n", (int)rtn);
-    
-    return rtn;
-}
-
-static OSStatus SocketWrite(
-                     SSLConnectionRef   connection,
-                     const void       *data, 
-                     size_t         *dataLength)  /* IN/OUT */ 
-                     {
-    UInt32    bytesSent = 0;
-    int      sock = (int)connection;
-    int     length;
-    UInt32    dataLen = *dataLength;
-    const UInt8 *dataPtr = (UInt8 *)data;
-    OSStatus  ortn;
-
-    *dataLength = 0;
-    
-    do {
-        length = write(sock, 
-                       (char*)dataPtr + bytesSent, 
-                       dataLen - bytesSent);
-    } while ((length > 0) && 
-             ( (bytesSent += length) < dataLen) );
-    
-    if(length <= 0) {
-        if(errno == EAGAIN) {
-            ortn = errSSLWouldBlock;
-        }
-        else {
-            ortn = errSSLFatalAlert;
-        }
-    }
-    else {
-        ortn = noErr;
-    }
-    *dataLength = bytesSent;
-    return ortn;
-}
-
-/*
- * ssl_cdsa_connect
- *
- * given a socket, put an cdsa connection around it.
- */
-static void
-ssl_cdsa_connect(PurpleSslConnection *gsc) {
-	PurpleSslCDSAData *cdsa_data;
-    OSStatus err;
-
-	/*
-	 * allocate some memory to store variables for the cdsa connection.
-	 * the memory comes zero'd from g_new0 so we don't need to null the
-	 * pointers held in this struct.
-	 */
-	cdsa_data = g_new0(PurpleSslCDSAData, 1);
-	gsc->private_data = cdsa_data;
-	connections = g_list_append(connections, gsc);
-
-	/*
-	 * allocate a new SSLContextRef object
-	 */
-    err = SSLNewContext(false, &cdsa_data->ssl_ctx);
-	if (err != noErr) {
-		purple_debug_error("cdsa", "SSLNewContext failed\n");
-		if (gsc->error_cb != NULL)
-			gsc->error_cb(gsc, PURPLE_SSL_HANDSHAKE_FAILED,
-				gsc->connect_cb_data);
-
-		purple_ssl_close(gsc);
-		return;
-	}
-    
-    /*
-     * Set up our callbacks for reading/writing the file descriptor
-     */
-    err = SSLSetIOFuncs(cdsa_data->ssl_ctx, SocketRead, SocketWrite);
-    if (err != noErr) {
-		purple_debug_error("cdsa", "SSLSetIOFuncs failed\n");
-		if (gsc->error_cb != NULL)
-			gsc->error_cb(gsc, PURPLE_SSL_HANDSHAKE_FAILED,
-                          gsc->connect_cb_data);
-        
-		purple_ssl_close(gsc);
-		return;
-    }
-    
-    /*
-     * Pass the connection information to the connection to be used by our callbacks
-     */
-    err = SSLSetConnection(cdsa_data->ssl_ctx,(SSLConnectionRef)gsc->fd);
-    if (err != noErr) {
-		purple_debug_error("cdsa", "SSLSetConnection failed\n");
-		if (gsc->error_cb != NULL)
-			gsc->error_cb(gsc, PURPLE_SSL_HANDSHAKE_FAILED,
-                          gsc->connect_cb_data);
-        
-		purple_ssl_close(gsc);
-		return;
-    }
-    
-    /*
-     * Disable ciphers that confuse some servers
-     */
-    SSLCipherSuite ciphers[27] = {
-        TLS_RSA_WITH_AES_128_CBC_SHA,
-        SSL_RSA_WITH_RC4_128_SHA,
-        SSL_RSA_WITH_RC4_128_MD5,
-        TLS_RSA_WITH_AES_256_CBC_SHA,
-        SSL_RSA_WITH_3DES_EDE_CBC_SHA,
-        SSL_RSA_WITH_3DES_EDE_CBC_MD5,
-        SSL_RSA_WITH_DES_CBC_SHA,
-        SSL_RSA_EXPORT_WITH_RC4_40_MD5,
-        SSL_RSA_EXPORT_WITH_DES40_CBC_SHA,
-        SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5,
-        TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
-        TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
-        TLS_DHE_DSS_WITH_AES_256_CBC_SHA,
-        TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
-        SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
-        SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA,
-        SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,
-        SSL_DHE_DSS_WITH_DES_CBC_SHA,
-        SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA,
-        TLS_DH_anon_WITH_AES_128_CBC_SHA,
-        TLS_DH_anon_WITH_AES_256_CBC_SHA,
-        SSL_DH_anon_WITH_RC4_128_MD5,
-        SSL_DH_anon_WITH_3DES_EDE_CBC_SHA,
-        SSL_DH_anon_WITH_DES_CBC_SHA,
-        SSL_DH_anon_EXPORT_WITH_RC4_40_MD5,
-        SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA,
-        SSL_RSA_WITH_NULL_MD5,
-    };
-    err = (OSStatus)SSLSetEnabledCiphers(cdsa_data->ssl_ctx, ciphers, sizeof(ciphers) / sizeof(SSLCipherSuite));
-    if (err != noErr) {
-        purple_debug_error("cdsa", "SSLSetEnabledCiphers failed\n");
-        if (gsc->error_cb != NULL)
-            gsc->error_cb(gsc, PURPLE_SSL_HANDSHAKE_FAILED,
-                       gsc->connect_cb_data);
-
-        purple_ssl_close(gsc);
-        return;
-    }
-    
-    if(gsc->host) {
-        /*
-         * Set the peer's domain name so CDSA can check the certificate's CN
-         */
-        err = SSLSetPeerDomainName(cdsa_data->ssl_ctx, gsc->host, strlen(gsc->host));
-        if (err != noErr) {
-            purple_debug_error("cdsa", "SSLSetPeerDomainName failed\n");
-            if (gsc->error_cb != NULL)
-                gsc->error_cb(gsc, PURPLE_SSL_HANDSHAKE_FAILED,
-                              gsc->connect_cb_data);
-            
-            purple_ssl_close(gsc);
-            return;
-        }
-    }
-
-	/*
-     * Disable verifying the certificate chain.
-	 * We have to do that manually later on! This is the only way to be able to continue with a connection, even though the user
-	 * had to manually accept the certificate.
-     */
-	err = SSLSetEnableCertVerify(cdsa_data->ssl_ctx, false);
-    if (err != noErr) {
-		purple_debug_error("cdsa", "SSLSetEnableCertVerify failed\n");
-        /* error is not fatal */
-    }
-	
-	cdsa_data->handshake_handler = purple_input_add(gsc->fd, PURPLE_INPUT_READ, ssl_cdsa_handshake_cb, gsc);
-
-	// calling this here relys on the fact that SSLHandshake has to be called at least twice
-	// to get an actual connection (first time returning errSSLWouldBlock).
-	// I guess this is always the case because SSLHandshake has to send the initial greeting first, and then wait
-	// for a reply from the server, which would block the connection. SSLHandshake is called again when the server
-	// has sent its reply (this is achieved by the second line below)
-    ssl_cdsa_handshake_cb(gsc, gsc->fd, PURPLE_INPUT_READ);
-}
-
-static void
-ssl_cdsa_close(PurpleSslConnection *gsc)
-{
-	PurpleSslCDSAData *cdsa_data = PURPLE_SSL_CDSA_DATA(gsc);
-
-#ifdef CDSA_DEBUG
-	purple_debug_info("cdsa", "Closing PurpleSslConnection %p", cdsa_data);
-#endif
-
-	if (cdsa_data == NULL)
-		return;
-
-	if (cdsa_data->handshake_handler)
-		purple_input_remove(cdsa_data->handshake_handler);
-
-	if (cdsa_data->ssl_ctx != NULL) {
-        OSStatus err;
-        SSLSessionState state;
-        
-        err = SSLGetSessionState(cdsa_data->ssl_ctx, &state);
-        if(err != noErr)
-            purple_debug_error("cdsa", "SSLGetSessionState failed\n");
-        else if(state == kSSLConnected) {
-            err = SSLClose(cdsa_data->ssl_ctx);
-            if(err != noErr)
-                purple_debug_error("cdsa", "SSLClose failed\n");
-        }
-		
-#ifdef CDSA_DEBUG
-		purple_debug_info("cdsa", "SSLDisposeContext(%p)", cdsa_data->ssl_ctx);
-#endif
-
-        err = SSLDisposeContext(cdsa_data->ssl_ctx);
-        if(err != noErr)
-            purple_debug_error("cdsa", "SSLDisposeContext failed\n");
-        cdsa_data->ssl_ctx = NULL;
-    }
-
-	connections = g_list_remove(connections, gsc);
-
-	g_free(cdsa_data);
-	gsc->private_data = NULL;
-}
-
-static size_t
-ssl_cdsa_read(PurpleSslConnection *gsc, void *data, size_t len)
-{
-	PurpleSslCDSAData *cdsa_data = PURPLE_SSL_CDSA_DATA(gsc);
-	OSStatus	err;			/* Error info */
-	size_t		processed;		/* Number of bytes processed */
-	size_t		result;			/* Return value */
-
-    errno = 0;
-    err = SSLRead(cdsa_data->ssl_ctx, data, len, &processed);
-	switch (err) {
-		case noErr:
-			result = processed;
-			break;
-		case errSSLWouldBlock:
-			errno = EAGAIN;
-			result = ((processed > 0) ? processed : -1);
-			break;
-		case errSSLClosedGraceful:
-			result = 0;
-			break;
-		default:
-			result = -1;
-			purple_debug_error("cdsa", "receive failed (%d): %s\n", (int)err, strerror(errno));
-			break;
-	}
-
-    return result;
-}
-
-static size_t
-ssl_cdsa_write(PurpleSslConnection *gsc, const void *data, size_t len)
-{
-	PurpleSslCDSAData *cdsa_data = PURPLE_SSL_CDSA_DATA(gsc);
-	OSStatus	err;			/* Error info */
-	size_t		processed;		/* Number of bytes processed */
-	size_t		result;			/* Return value */
-	
-	if (cdsa_data != NULL) {
-#ifdef CDSA_DEBUG
-		purple_debug_info("cdsa", "SSLWrite(%p, %p %i)", cdsa_data->ssl_ctx, data, len);
-#endif
-
-        err = SSLWrite(cdsa_data->ssl_ctx, data, len, &processed);
-        
-		switch (err) {
-			case noErr:
-				result = processed;
-				break;
-			case errSSLWouldBlock:
-				errno = EAGAIN;
-				result = ((processed > 0) ? processed : -1);
-				break;
-			case errSSLClosedGraceful:
-				result = 0;
-				break;
-			default:
-				result = -1;
-				purple_debug_error("cdsa", "send failed (%d): %s\n", (int)err, strerror(errno));
-				break;
-		}
-		
-		return result;
-    } else {
-		return -1;
-	}
-}
-
-static gboolean register_certificate_ui_cb(query_cert_chain cb) {
-	certificate_ui_cb = cb;
-	
-	return true;
-}
-
-static gboolean copy_certificate_chain(PurpleSslConnection *gsc /* IN */, CFArrayRef *result /* OUT */) {
-	PurpleSslCDSAData *cdsa_data = PURPLE_SSL_CDSA_DATA(gsc);
-#if MAC_OS_X_VERSION_10_5 > MAC_OS_X_VERSION_MAX_ALLOWED
-	// this function was declared deprecated in 10.5
-	return SSLGetPeerCertificates(cdsa_data->ssl_ctx, result) == noErr;
-#else
-	return SSLCopyPeerCertificates(cdsa_data->ssl_ctx, result) == noErr;
-#endif
-}
-
-static PurpleSslOps ssl_ops = {
-	ssl_cdsa_init,
-	ssl_cdsa_uninit,
-	ssl_cdsa_connect,
-	ssl_cdsa_close,
-	ssl_cdsa_read,
-	ssl_cdsa_write,
-	NULL, /* get_peer_certificates */
-	NULL, /* reserved2 */
-	NULL, /* reserved3 */
-	NULL  /* reserved4 */
-};
-
-#endif /* HAVE_CDSA */
-
-static gboolean
-plugin_load(PurplePlugin *plugin)
-{
-#ifdef HAVE_CDSA
-	if (!purple_ssl_get_ops())
-		purple_ssl_set_ops(&ssl_ops);
-	
-	purple_plugin_ipc_register(plugin,
-							   "register_certificate_ui_cb",
-							   PURPLE_CALLBACK(register_certificate_ui_cb),
-							   purple_marshal_BOOLEAN__POINTER,
-							   purple_value_new(PURPLE_TYPE_BOOLEAN),
-							   1, purple_value_new(PURPLE_TYPE_POINTER));
-
-	purple_plugin_ipc_register(plugin,
-							   "copy_certificate_chain",
-							   PURPLE_CALLBACK(copy_certificate_chain),
-							   purple_marshal_BOOLEAN__POINTER_POINTER,
-							   purple_value_new(PURPLE_TYPE_BOOLEAN),
-							   2, purple_value_new(PURPLE_TYPE_POINTER), purple_value_new(PURPLE_TYPE_POINTER));
-	
-	return (TRUE);
-#else
-	return (FALSE);
-#endif
-}
-
-static gboolean
-plugin_unload(PurplePlugin *plugin)
-{
-#ifdef HAVE_CDSA
-	if (purple_ssl_get_ops() == &ssl_ops)
-		purple_ssl_set_ops(NULL);
-	
-	purple_plugin_ipc_unregister_all(plugin);
-#endif
-
-	return (TRUE);
-}
-
-static PurplePluginInfo info = {
-	PURPLE_PLUGIN_MAGIC,
-	PURPLE_MAJOR_VERSION,
-	PURPLE_MINOR_VERSION,
-	PURPLE_PLUGIN_STANDARD,				/* type */
-	NULL,						/* ui_requirement */
-	PURPLE_PLUGIN_FLAG_INVISIBLE,			/* flags */
-	NULL,						/* dependencies */
-	PURPLE_PRIORITY_DEFAULT,				/* priority */
-
-	SSL_CDSA_PLUGIN_ID,				/* id */
-	N_("CDSA"),					/* name */
-	"0.1",					/* version */
-
-	N_("Provides SSL support through CDSA."),	/* summary */
-	N_("Provides SSL support through CDSA."),	/* description */
-	"CDSA",										/* author */
-	"http://www.opengroup.org/security/l2-cdsa.htm",						/* homepage */
-
-	plugin_load,					/* load */
-	plugin_unload,					/* unload */
-	NULL,						/* destroy */
-
-	NULL,						/* ui_info */
-	NULL,						/* extra_info */
-	NULL,						/* prefs_info */
-	NULL,						/* actions */
-
-	NULL, /* reserved */
-	NULL, /* reserved */
-	NULL, /* reserved */
-	NULL  /* reserved */
-};
-
-static void
-init_plugin(PurplePlugin *plugin)
-{
-}
-
-PURPLE_INIT_PLUGIN(ssl_cdsa, init_plugin, info)
diff -r b210771b9121 -r f3540daa81d8 Plugins/Purple Service/libpurple_extensions/ssl-cdsa.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/Purple Service/libpurple_extensions/ssl-cdsa.m	Tue Nov 16 01:52:41 2010 -0800
@@ -0,0 +1,650 @@
+/*
+ * CDSA SSL-plugin for purple
+ *
+ * Copyright (c) 2007 Andreas Monitzer <andy at monitzer.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#import <libpurple/internal.h>
+#import <libpurple/debug.h>
+#import <libpurple/plugin.h>
+#import <libpurple/sslconn.h>
+#import <libpurple/version.h>
+#import <libpurple/signals.h>
+
+#define SSL_CDSA_PLUGIN_ID "ssl-cdsa"
+
+#ifdef HAVE_CDSA
+
+//#define CDSA_DEBUG
+
+#import <Security/Security.h>
+#import <unistd.h>
+
+typedef struct
+{
+	SSLContextRef	ssl_ctx;
+	guint	handshake_handler;
+} PurpleSslCDSAData;
+
+static GList *connections = NULL;
+
+#define PURPLE_SSL_CDSA_DATA(gsc) ((PurpleSslCDSAData *)gsc->private_data)
+#define PURPLE_SSL_CONNECTION_IS_VALID(gsc) (g_list_find(connections, (gsc)) != NULL)
+
+/*
+ * query_cert_chain - callback for letting the user review the certificate before accepting it
+ *
+ * gsc: The secure connection used




More information about the commits mailing list