]> granicus.if.org Git - transmission/commitdiff
if setting the proxy password to blank, delete it from the keychain
authorMitchell Livingston <livings124@transmissionbt.com>
Fri, 13 Jun 2008 04:52:46 +0000 (04:52 +0000)
committerMitchell Livingston <livings124@transmissionbt.com>
Fri, 13 Jun 2008 04:52:46 +0000 (04:52 +0000)
macosx/Controller.m
macosx/EMKeychain/EMKeychainItem.h
macosx/EMKeychain/EMKeychainItem.m
macosx/PrefsController.m

index 3eb0dc8b3ffb6e5e9e82643cbdf12917ae2e59dd..1e6789ac29ce083dcf17885203fd5ea2fdfda58e 100644 (file)
@@ -228,7 +228,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
                                 TR_DEFAULT_PROXY_TYPE, /* reset in prefs */
                                 [fDefaults boolForKey: @"ProxyAuthorize"],
                                 [[fDefaults stringForKey: @"ProxyUsername"] UTF8String],
-                                ""); /* reset in prefs - from Keychain (leave blank instead of NULL) */
+                                NULL); /* reset in prefs - from Keychain */
         
         [NSApp setDelegate: self];
         
index 7464e403ce825eaf6fe4c703f25a5bbb1eb6f3f2..dad89695cfd7bada06ffafa68a8a55552065d991 100644 (file)
@@ -40,6 +40,9 @@
 - (BOOL)setPassword:(NSString *)newPassword;
 - (BOOL)setUsername:(NSString *)newUsername;
 - (BOOL)setLabel:(NSString *)newLabel;
+
+//added by ML
+- (void)removeFromKeychain;
 @end 
 
 @interface EMKeychainItem (Private)
index a9da29735da0538543e641453e25cd687ab5f5a9..5cabcc7ef65a95d0079dfa310642518913dd0cb0 100644 (file)
        
        return [self modifyAttributeWithTag:kSecLabelItemAttr toBeString:newLabel];
 }
+
+- (void)removeFromKeychain
+{
+    SecKeychainItemDelete(coreKeychainItem);
+}
+
 @end
 
 @implementation EMKeychainItem (Private)
index 9f9be34f895590b25205cd60b8fd669e5b20e38b..3a048cafa206a71cc7134bf0ab9fba2ff66329bd 100644 (file)
     EMGenericKeychainItem * keychainItem = [[EMKeychainProxy sharedProxy] genericKeychainItemForService: @"Transmission:Proxy"
                                             withUsername: @"Proxy"];
     if (keychainItem)
-        [keychainItem setPassword: password];
+    {
+        if (![password isEqualToString: @""])
+            [keychainItem setPassword: password];
+        else
+            [keychainItem removeFromKeychain];
+    }
     else
-        [[EMKeychainProxy sharedProxy] addGenericKeychainItemForService: @"Transmission:Proxy" withUsername: @"Proxy"
-            password: password];
+    {
+        if (![password isEqualToString: @""])
+            [[EMKeychainProxy sharedProxy] addGenericKeychainItemForService: @"Transmission:Proxy" withUsername: @"Proxy"
+                password: password];
+    }
     
     tr_sessionSetProxyPassword(fHandle, [password UTF8String]);
 }