Default to request server id if MoveItems response lacks one.

The documentation says it's a required element of the response
but dogfooder reports a crash implying otherwise.

http://msdn.microsoft.com/en-us/library/gg663427(v=exchg.80).aspx

Bug: 11186535
Change-Id: I10f64de7ccc4c6293ace40dcd6e3c4ce3eda80ab
diff --git a/src/com/android/exchange/eas/EasMoveItems.java b/src/com/android/exchange/eas/EasMoveItems.java
index 8ddb747..c1a7d2f 100644
--- a/src/com/android/exchange/eas/EasMoveItems.java
+++ b/src/com/android/exchange/eas/EasMoveItems.java
@@ -124,9 +124,23 @@
     private void processResponse(final MessageMove request, final MoveResponse response) {
         // TODO: Eventually this should use a transaction.
         // TODO: Improve how the parser reports statuses and how we handle them here.
-        if (!response.sourceMessageId.equals(request.getServerId())) {
-            // TODO: This is bad, but I think we need to respect the response anyway.
-            LogUtils.e(LOG_TAG, "Got a response for a message we didn't request");
+
+        final String sourceMessageId;
+
+        if (response.sourceMessageId == null) {
+            // The response didn't contain SrcMsgId, despite it being required.
+            LogUtils.e(LOG_TAG,
+                    "MoveItems response for message %d has no SrcMsgId, using request's server id",
+                    request.getMessageId());
+            sourceMessageId = request.getServerId();
+        } else {
+            sourceMessageId = response.sourceMessageId;
+            if (!sourceMessageId.equals(request.getServerId())) {
+                // TODO: This is bad, but we still need to process the response. Just log for now.
+                LogUtils.e(LOG_TAG,
+                        "MoveItems response for message %d has SrcMsgId != request's server id",
+                        request.getMessageId());
+            }
         }
 
         final ContentValues cv = new ContentValues(1);
@@ -134,8 +148,7 @@
             // Restore the old mailbox id
             cv.put(EmailContent.MessageColumns.MAILBOX_KEY, request.getSourceFolderKey());
         } else if (response.moveStatus == MoveItemsParser.STATUS_CODE_SUCCESS) {
-            if (response.newMessageId != null
-                    && !response.newMessageId.equals(response.sourceMessageId)) {
+            if (response.newMessageId != null && !response.newMessageId.equals(sourceMessageId)) {
                 cv.put(EmailContent.SyncColumns.SERVER_ID, response.newMessageId);
             }
         }