From ba64cbcaf81b8ce1dcb5981f973c36c83d0f33cf Mon Sep 17 00:00:00 2001 From: Andrew Stadler Date: Sun, 27 Sep 2009 14:35:11 -0700 Subject: [PATCH] Watch for null results when updating internaldate. Fixes bug # 2148971 Note, this condition happens when we APPEND a message to the server but then we turn around and query for it, and the server reports that it's not there: >>> 7 APPEND "Sent" {490} <<< #null# [Ready, for, argument] <<< #null# [194, EXISTS] <<< #7# [OK, [APPENDUID, 1233339552, 1191], APPEND, completed] >>> 8 UID SEARCH (HEADER MESSAGE-ID \ ) <<< #null# [SEARCH] <<< #8# [OK, UID, SEARCH, completed] >>> 9 UID SEARCH UID NULL <<< #9# [BAD, UID, SEARCH, error;, bogus, or, incorrect, syntax, \ of, search, critera] I don't know why the Yahoo! server did this, but now we'll at least not crash if they do it again. --- src/com/android/email/MessagingController.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/com/android/email/MessagingController.java b/src/com/android/email/MessagingController.java index 0d21ed161..349090bf6 100644 --- a/src/com/android/email/MessagingController.java +++ b/src/com/android/email/MessagingController.java @@ -1702,14 +1702,16 @@ public class MessagingController implements Runnable { } // 5. If requested, Best-effort to capture new "internaldate" from the server - if (updateInternalDate) { + if (updateInternalDate && message.mServerId != null) { try { Message remoteMessage2 = remoteFolder.getMessage(message.mServerId); - FetchProfile fp2 = new FetchProfile(); - fp2.add(FetchProfile.Item.ENVELOPE); - remoteFolder.fetch(new Message[] { remoteMessage2 }, fp2, null); - message.mServerTimeStamp = remoteMessage2.getInternalDate().getTime(); - updateMessage = true; + if (remoteMessage2 != null) { + FetchProfile fp2 = new FetchProfile(); + fp2.add(FetchProfile.Item.ENVELOPE); + remoteFolder.fetch(new Message[] { remoteMessage2 }, fp2, null); + message.mServerTimeStamp = remoteMessage2.getInternalDate().getTime(); + updateMessage = true; + } } catch (MessagingException me) { // skip it - we can live without this }