This may make sense for "a user entered a password in the IRC server field rather than a NickServ field" but in the code, it does not.
The password for an *account* is not the same as these *special passwords* of which there can be multiple, and many unrelated ones. Using the server password for all NickServ identities, for example, is not valid: my password for 'zac' and my password for 'zacisawesome' can be totally different than the *server* password; this patch entirely breaks having a different server password from a NickServ password. Do not consider Freenode the only case here; it behaves radically different than other networks wrt server password. On Fri, Nov 25, 2011 at 06:41, <comm...@adium.im> wrote: > details: http://hg.adium.im/adium/rev/eb53d7749f4b > revision: 4316:eb53d7749f4b > branch: (none) > author: Patrick Steinhardt <steinhard...@me.com> > date: Fri Nov 25 12:36:33 2011 +0100 > > Use accounts' password if available. > > Fix Adium asking for an actually known password when signing in with a > registered IRC account. Refs #15020. > > diffs (16 lines): > > diff -r b4a8916957f3 -r eb53d7749f4b Source/AdiumPasswords.m > --- a/Source/AdiumPasswords.m Fri Nov 25 00:35:11 2011 +0100 > +++ b/Source/AdiumPasswords.m Fri Nov 25 12:36:33 2011 +0100 > @@ -384,7 +384,11 @@ > > - (void)passwordForType:(AISpecialPasswordType)inType > forAccount:(AIAccount *)inAccount promptOption:(AIPromptOption)inOption > name:(NSString *)inName notifyingTarget:(id)inTarget > selector:(SEL)inSelector context:(id)inContext > { > - NSString *password = [self passwordForType:inType > forAccount:inAccount name:inName.lowercaseString]; > + NSString *password = [inAccount valueForKey:@"password"]; > + > + if (!password || [password length] == 0) { > + password = [self passwordForType:inType forAccount:inAccount > name:inName.lowercaseString]; > + } > > if (inOption != AIPromptAlways && password && [password length] != > 0) { > //Invoke the target right away > >