fix 90507 patch by ch.ey@gmx.net, r/sr=me, when using authenticated SMTP smtp username value has @{smtp server hostname} appended to it

This commit is contained in:
bienvenu%nventure.com 2003-10-21 17:10:53 +00:00
Родитель c272e421bf
Коммит a68b7f98b1
4 изменённых файлов: 31 добавлений и 17 удалений

Просмотреть файл

@ -152,9 +152,12 @@ noIdentities=You don't have any email identities yet. Create one with the Accou
## @name NS_SMTP_PASSWORD_PROMPT_TITLE
12542=Mail Server Password Required
## @name NS_SMTP_PASSWORD_PROMPT
## @name NS_SMTP_PASSWORD_PROMPT1
12543=Enter your password for %S:
## @name NS_SMTP_PASSWORD_PROMPT2
12570=Enter your password for %S on %S:
## @name NS_SMTP_CONNECTING_TO_SERVER
12545=Connecting to server...

Просмотреть файл

@ -107,7 +107,8 @@ private:
#define NS_MSG_LARGE_MESSAGE_WARNING NS_MSG_GENERATE_FAILURE(12541)
#define NS_SMTP_PASSWORD_PROMPT_TITLE 12542
#define NS_SMTP_PASSWORD_PROMPT 12543
#define NS_SMTP_PASSWORD_PROMPT1 12543
#define NS_SMTP_PASSWORD_PROMPT2 12570
#define NS_SMTP_CONNECTING_TO_SERVER NS_MSG_GENERATE_SUCCESS(12545)
#define NS_MSG_SENDING_MESSAGE NS_MSG_GENERATE_SUCCESS(12550)

Просмотреть файл

@ -1709,28 +1709,32 @@ nsSmtpProtocol::GetPassword(char **aPassword)
rv = smtpServer->GetUsername(getter_Copies(username));
NS_ENSURE_SUCCESS(rv, rv);
nsCAutoString promptValue(username);
const PRUnichar *formatStrings[] =
{
NS_ConvertASCIItoUCS2(username).get()
};
PRBool hideHostnameForPassword = PR_FALSE;
rv = prefBranch->GetBoolPref(prefName.get(), &hideHostnameForPassword);
if (NS_SUCCEEDED(rv) && hideHostnameForPassword) {
// for certain redirector types, we don't want to show the
// hostname to the user when prompting for password
formatStrings[1] = nsnull;
}
else {
nsXPIDLCString hostname;
rv = smtpServer->GetHostname(getter_Copies(hostname));
NS_ENSURE_SUCCESS(rv, rv);
promptValue.Append("@");
promptValue.Append(hostname);
formatStrings[1] = NS_ConvertASCIItoUCS2(hostname).get();
}
rv = PromptForPassword(smtpServer, smtpUrl, NS_ConvertASCIItoUCS2(promptValue).get(), aPassword);
rv = PromptForPassword(smtpServer, smtpUrl, formatStrings, aPassword);
NS_ENSURE_SUCCESS(rv,rv);
return rv;
}
nsresult nsSmtpProtocol::PromptForPassword(nsISmtpServer *aSmtpServer, nsISmtpUrl *aSmtpUrl, const PRUnichar *aPromptValue, char **aPassword)
nsresult
nsSmtpProtocol::PromptForPassword(nsISmtpServer *aSmtpServer, nsISmtpUrl *aSmtpUrl, const PRUnichar **formatStrings, char **aPassword)
{
nsresult rv;
nsCOMPtr<nsIStringBundleService> stringService = do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv);
@ -1740,15 +1744,15 @@ nsresult nsSmtpProtocol::PromptForPassword(nsISmtpServer *aSmtpServer, nsISmtpUr
rv = stringService->CreateBundle("chrome://messenger/locale/messengercompose/composeMsgs.properties", getter_AddRefs(composeStringBundle));
NS_ENSURE_SUCCESS(rv,rv);
const PRUnichar *formatStrings[] =
{
aPromptValue,
};
nsXPIDLString passwordPromptString;
rv = composeStringBundle->FormatStringFromID(NS_SMTP_PASSWORD_PROMPT,
formatStrings, 1,
getter_Copies(passwordPromptString));
if(formatStrings[1])
rv = composeStringBundle->FormatStringFromID(NS_SMTP_PASSWORD_PROMPT2,
formatStrings, 2,
getter_Copies(passwordPromptString));
else
rv = composeStringBundle->FormatStringFromID(NS_SMTP_PASSWORD_PROMPT1,
formatStrings, 1,
getter_Copies(passwordPromptString));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIAuthPrompt> netPrompt;
@ -1802,7 +1806,13 @@ nsSmtpProtocol::GetUsernamePassword(char **aUsername, char **aPassword)
rv = smtpServer->GetHostname(getter_Copies(hostname));
NS_ENSURE_SUCCESS(rv, rv);
rv = PromptForPassword(smtpServer, smtpUrl, NS_ConvertASCIItoUCS2(hostname).get(), aPassword);
const PRUnichar *formatStrings[] =
{
NS_ConvertASCIItoUCS2(hostname).get(),
nsnull
};
rv = PromptForPassword(smtpServer, smtpUrl, formatStrings, aPassword);
NS_ENSURE_SUCCESS(rv,rv);
return rv;
}

Просмотреть файл

@ -248,7 +248,7 @@ private:
const char * GetUserDomainName();
nsresult GetPassword(char **aPassword);
nsresult GetUsernamePassword(char **aUsername, char **aPassword);
nsresult PromptForPassword(nsISmtpServer *aSmtpServer, nsISmtpUrl *aSmtpUrl, const PRUnichar *aPromptValue, char **aPassword);
nsresult PromptForPassword(nsISmtpServer *aSmtpServer, nsISmtpUrl *aSmtpUrl, const PRUnichar **formatStrings, char **aPassword);
void BackupAuthFlags();
void RestoreAuthFlags();