diff --git a/macosx/Controller.m b/macosx/Controller.m index 1e6789ac2..3eb0dc8b3 100644 --- a/macosx/Controller.m +++ b/macosx/Controller.m @@ -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], - NULL); /* reset in prefs - from Keychain */ + ""); /* reset in prefs - from Keychain (leave blank instead of NULL) */ [NSApp setDelegate: self]; diff --git a/macosx/PrefsController.h b/macosx/PrefsController.h index daa23b01f..b3ae5aa37 100644 --- a/macosx/PrefsController.h +++ b/macosx/PrefsController.h @@ -59,7 +59,6 @@ IBOutlet NSTextField * fProxyAddressField, * fProxyPasswordField; IBOutlet NSPopUpButton * fProxyTypePopUp; - NSString * fProxyPassword; BOOL fProxyPasswordSet; IBOutlet NSTextField * fRPCPortField; diff --git a/macosx/PrefsController.m b/macosx/PrefsController.m index 95a1821fb..8f4fc3b99 100644 --- a/macosx/PrefsController.m +++ b/macosx/PrefsController.m @@ -110,7 +110,7 @@ [self updateProxyType]; fProxyPasswordSet = NO; - if ([fProxyPasswordField isEnabled]) + if ([fDefaults boolForKey: @"Proxy"] && [fDefaults boolForKey: @"ProxyAuthorize"]) [self updateProxyPassword]; //update rpc access list @@ -138,8 +138,6 @@ [fPortChecker release]; } - [fProxyPassword release]; - [fRPCAccessArray release]; [super dealloc]; @@ -212,7 +210,7 @@ proxyType = PROXY_HTTP; } [fProxyTypePopUp selectItemAtIndex: proxyType]; - [fProxyPasswordField setStringValue: fProxyPassword ? fProxyPassword : @""]; + [fProxyPasswordField setStringValue: [NSString stringWithUTF8String: tr_sessionGetProxyPassword(fHandle)]]; //set blocklist [self updateBlocklistFields]; @@ -677,14 +675,12 @@ - (void) setProxyEnabled: (id) sender { + BOOL enable = [fDefaults boolForKey: @"Proxy"]; tr_sessionSetProxyEnabled(fHandle, [fDefaults boolForKey: @"Proxy"]); //if proxy password hasn't be retrieved, get it now - if (!fProxyPasswordSet && [fProxyPasswordField isEnabled]) - { + if (!fProxyPasswordSet && enable && [fDefaults boolForKey: @"ProxyAuthorize"]) [self updateProxyPassword]; - [fProxyPasswordField setStringValue: fProxyPassword]; - } } - (void) setProxyAddress: (id) sender @@ -751,14 +747,12 @@ - (void) setProxyAuthorize: (id) sender { - tr_sessionSetProxyAuthEnabled(fHandle, [fDefaults boolForKey: @"ProxyAuthorize"]); + BOOL enable = [fDefaults boolForKey: @"ProxyAuthorize"]; + tr_sessionSetProxyAuthEnabled(fHandle, enable); //if proxy password hasn't be retrieved, get it now - if (!fProxyPasswordSet && [fProxyPasswordField isEnabled]) - { + if (!fProxyPasswordSet && enable) [self updateProxyPassword]; - [fProxyPasswordField setStringValue: fProxyPassword]; - } } - (void) setProxyUsername: (id) sender @@ -768,33 +762,32 @@ - (void) setProxyPassword: (id) sender { - [fProxyPassword release]; - fProxyPassword = [[sender stringValue] retain]; + NSString * password = [[sender stringValue] retain]; EMGenericKeychainItem * keychainItem = [[EMKeychainProxy sharedProxy] genericKeychainItemForService: @"Transmission:Proxy" withUsername: @"Proxy"]; if (keychainItem) - [keychainItem setPassword: fProxyPassword]; + [keychainItem setPassword: password]; else [[EMKeychainProxy sharedProxy] addGenericKeychainItemForService: @"Transmission:Proxy" withUsername: @"Proxy" - password: fProxyPassword]; + password: password]; - tr_sessionSetProxyPassword(fHandle, [fProxyPassword UTF8String]); + tr_sessionSetProxyPassword(fHandle, [password UTF8String]); } - (void) updateProxyPassword { fProxyPasswordSet = YES; - [fProxyPassword release]; - + NSString * password; EMGenericKeychainItem * keychainItem = [[EMKeychainProxy sharedProxy] genericKeychainItemForService: @"Transmission:Proxy" withUsername: @"Proxy"]; - if (!(fProxyPassword = [keychainItem password])) - fProxyPassword = @""; - [fProxyPassword retain]; + if (!(password = [keychainItem password])) + password = @""; - tr_sessionSetProxyPassword(fHandle, [fProxyPassword UTF8String]); + tr_sessionSetProxyPassword(fHandle, [password UTF8String]); + + [fProxyPasswordField setStringValue: password]; } - (void) setRPCEnabled: (id) sender