diff --git a/src/com/android/exchange/CommandStatusException.java b/src/com/android/exchange/CommandStatusException.java
index 53f3ecd..ccfa542 100644
--- a/src/com/android/exchange/CommandStatusException.java
+++ b/src/com/android/exchange/CommandStatusException.java
@@ -33,6 +33,8 @@
 
     public static class CommandStatus {
 
+        public static final int STATUS_MAX = 177;
+
         // Fatal user/provisioning issues (put on security hold)
         public static final int USER_DISABLED_FOR_SYNC = 126;
         public static final int USERS_DISABLED_FOR_SYNC = 127;
diff --git a/src/com/android/exchange/adapter/PingParser.java b/src/com/android/exchange/adapter/PingParser.java
index 0c9dbc7..4134884 100644
--- a/src/com/android/exchange/adapter/PingParser.java
+++ b/src/com/android/exchange/adapter/PingParser.java
@@ -16,6 +16,7 @@
 
 package com.android.exchange.adapter;
 
+import com.android.exchange.CommandStatusException.CommandStatus;
 import com.android.exchange.Eas;
 import com.android.mail.utils.LogUtils;
 
@@ -193,7 +194,7 @@
         while (nextTag(START_DOCUMENT) != END_DOCUMENT) {
             if (tag == Tags.PING_STATUS) {
                 mPingStatus = getValue("Status", mPingStatus, STATUS_EXPIRED,
-                        STATUS_SERVER_ERROR);
+                        CommandStatus.STATUS_MAX);
             } else if (tag == Tags.PING_MAX_FOLDERS) {
                 mMaxFolders = getValue("MaxFolders", mMaxFolders);
             } else if (tag == Tags.PING_FOLDERS) {
diff --git a/src/com/android/exchange/eas/EasPing.java b/src/com/android/exchange/eas/EasPing.java
index 73f75ba..07c62de 100644
--- a/src/com/android/exchange/eas/EasPing.java
+++ b/src/com/android/exchange/eas/EasPing.java
@@ -29,6 +29,7 @@
 import com.android.emailcommon.provider.EmailContent.AccountColumns;
 import com.android.emailcommon.provider.EmailContent.MailboxColumns;
 import com.android.emailcommon.provider.Mailbox;
+import com.android.exchange.CommandStatusException.CommandStatus;
 import com.android.exchange.Eas;
 import com.android.exchange.EasResponse;
 import com.android.exchange.adapter.PingParser;
@@ -228,6 +229,43 @@
             case PingParser.STATUS_SERVER_ERROR:
                 LogUtils.i(TAG, "Server error for account %d", mAccountId);
                 break;
+            case CommandStatus.SERVER_ERROR_RETRY:
+                // Try again later.
+                LogUtils.i(TAG, "Retryable server error for account %d", mAccountId);
+                return RESULT_RESTART;
+
+            // These errors should not happen.
+            case CommandStatus.USER_DISABLED_FOR_SYNC:
+            case CommandStatus.USERS_DISABLED_FOR_SYNC:
+            case CommandStatus.USER_ON_LEGACY_SERVER_CANT_SYNC:
+            case CommandStatus.DEVICE_QUARANTINED:
+            case CommandStatus.ACCESS_DENIED:
+            case CommandStatus.USER_ACCOUNT_DISABLED:
+            case CommandStatus.NOT_PROVISIONABLE_PARTIAL:
+            case CommandStatus.NOT_PROVISIONABLE_LEGACY_DEVICE:
+            case CommandStatus.TOO_MANY_PARTNERSHIPS:
+                LogUtils.e(TAG, "Unexpected error %d on ping", pingStatus);
+                return RESULT_AUTHENTICATION_ERROR;
+
+            // These errors should not happen.
+            case CommandStatus.SYNC_STATE_NOT_FOUND:
+            case CommandStatus.SYNC_STATE_LOCKED:
+            case CommandStatus.SYNC_STATE_CORRUPT:
+            case CommandStatus.SYNC_STATE_EXISTS:
+            case CommandStatus.SYNC_STATE_INVALID:
+            case CommandStatus.NEEDS_PROVISIONING_WIPE:
+            case CommandStatus.NEEDS_PROVISIONING:
+            case CommandStatus.NEEDS_PROVISIONING_REFRESH:
+            case CommandStatus.NEEDS_PROVISIONING_INVALID:
+            case CommandStatus.WTF_INVALID_COMMAND:
+            case CommandStatus.WTF_INVALID_PROTOCOL:
+            case CommandStatus.WTF_DEVICE_CLAIMS_EXTERNAL_MANAGEMENT:
+            case CommandStatus.WTF_UNKNOWN_ITEM_TYPE:
+            case CommandStatus.WTF_REQUIRES_PROXY_WITHOUT_SSL:
+            case CommandStatus.ITEM_NOT_FOUND:
+                LogUtils.e(TAG, "Unexpected error %d on ping", pingStatus);
+                return RESULT_OTHER_FAILURE;
+
             default:
                 break;
         }
diff --git a/src/com/android/exchange/service/EasServerConnection.java b/src/com/android/exchange/service/EasServerConnection.java
index 7275e24..b5abe82 100644
--- a/src/com/android/exchange/service/EasServerConnection.java
+++ b/src/com/android/exchange/service/EasServerConnection.java
@@ -176,6 +176,7 @@
             HttpConnectionParams.setSoTimeout(params, (int)(timeout));
             HttpConnectionParams.setSocketBufferSize(params, 8192);
             mClient = new DefaultHttpClient(getClientConnectionManager(), params) {
+                @Override
                 protected BasicHttpProcessor createHttpProcessor() {
                     final BasicHttpProcessor processor = super.createHttpProcessor();
                     processor.addRequestInterceptor(new CurlLogger());
diff --git a/src/com/android/exchange/service/EmailSyncAdapterService.java b/src/com/android/exchange/service/EmailSyncAdapterService.java
index 26a3144..4e1eab5 100644
--- a/src/com/android/exchange/service/EmailSyncAdapterService.java
+++ b/src/com/android/exchange/service/EmailSyncAdapterService.java
@@ -539,7 +539,7 @@
         public void onPerformSync(final android.accounts.Account acct, final Bundle extras,
                 final String authority, final ContentProviderClient provider,
                 final SyncResult syncResult) {
-            LogUtils.i(TAG, "performSync: %s, %s", acct.toString(), extras.toString());
+            LogUtils.i(TAG, "onPerformSync: %s, %s", acct.toString(), extras.toString());
             TempDirectory.setTempDirectory(EmailSyncAdapterService.this);
 
             // TODO: Perform any connectivity checks, bail early if we don't have proper network
