diff --git a/res/values/strings.xml b/res/values/strings.xml index ccba1ec71..79a33418b 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -590,6 +590,11 @@ save attachment. Cannot safely connect to server.\n(%s) + + + The server responded with an error; please check your username and password + and try again. + Cannot connect to server. diff --git a/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java b/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java index 06e14c815..31d98f825 100644 --- a/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java +++ b/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java @@ -580,6 +580,9 @@ public class AccountCheckSettingsFragment extends Fragment { ? R.string.account_setup_failed_dlg_auth_message : R.string.account_setup_failed_dlg_auth_message_fmt; break; + case MessagingException.AUTHENTICATION_FAILED_OR_SERVER_ERROR: + id = R.string.account_setup_failed_check_credentials_message; + break; case MessagingException.IOERROR: id = R.string.account_setup_failed_ioerror; break; diff --git a/src/com/android/email/mail/MessagingException.java b/src/com/android/email/mail/MessagingException.java index 4cd120531..cdf0cf0ff 100644 --- a/src/com/android/email/mail/MessagingException.java +++ b/src/com/android/email/mail/MessagingException.java @@ -59,6 +59,8 @@ public class MessagingException extends Exception { public static final int AUTODISCOVER_AUTHENTICATION_FAILED = 11; /** Autodiscover completed with a result (non-error) */ public static final int AUTODISCOVER_AUTHENTICATION_RESULT = 12; + /** Ambiguous failure; server error or bad credentials */ + public static final int AUTHENTICATION_FAILED_OR_SERVER_ERROR = 13; protected int mExceptionType; diff --git a/src/com/android/exchange/EasSyncService.java b/src/com/android/exchange/EasSyncService.java index 69117a1e8..d974f7f1e 100644 --- a/src/com/android/exchange/EasSyncService.java +++ b/src/com/android/exchange/EasSyncService.java @@ -142,6 +142,8 @@ public class EasSyncService extends AbstractSyncService { static private final String AUTO_DISCOVER_PAGE = "/autodiscover/autodiscover.xml"; static private final int AUTO_DISCOVER_REDIRECT_CODE = 451; + static private final int INTERNAL_SERVER_ERROR_CODE = 500; + static public final String EAS_12_POLICY_TYPE = "MS-EAS-Provisioning-WBXML"; static public final String EAS_2_POLICY_TYPE = "MS-WAP-Provisioning-XML"; @@ -466,6 +468,10 @@ public class EasSyncService extends AbstractSyncService { } else if (isAuthError(code)) { userLog("Authentication failed"); resultCode = MessagingException.AUTHENTICATION_FAILED; + } else if (code == INTERNAL_SERVER_ERROR_CODE) { + // For Exchange 2003, this could mean an authenticiation failure OR a server error + userLog("Internal server error"); + resultCode = MessagingException.AUTHENTICATION_FAILED_OR_SERVER_ERROR; } else { // TODO Need to catch other kinds of errors (e.g. policy) For now, report the code. userLog("Validation failed, reporting I/O error: ", code);