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
>
>

Reply via email to