From 2f60002586aca27570583847674004ec4348f3e8 Mon Sep 17 00:00:00 2001 From: Marcus Cavanaugh Date: Wed, 25 Jun 2014 14:13:40 -0700 Subject: [PATCH] Merge pull request #20988 from mcav/gelam-epoch Bug 941991 - [Email] Sync falls into the epoch. r=jrburke --- apps/email/js/ext/mailapi/worker-bootstrap.js | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/apps/email/js/ext/mailapi/worker-bootstrap.js b/apps/email/js/ext/mailapi/worker-bootstrap.js index 7b91340ef475..69c0568b23ea 100644 --- a/apps/email/js/ext/mailapi/worker-bootstrap.js +++ b/apps/email/js/ext/mailapi/worker-bootstrap.js @@ -7848,6 +7848,34 @@ FolderStorage.prototype = { }, _refreshSlice: function fs__refreshSlice(slice, checkOpenRecency, releaseMutex) { + + var doneCallback = function refreshDoneCallback(err, bisectInfo, + numMessages) { + slice._onAddingHeader = null; + + var reportSyncStatusAs = 'synced'; + switch (err) { + case 'aborted': + case 'unknown': + reportSyncStatusAs = 'syncfailed'; + break; + } + + releaseMutex(); + slice.waitingOnData = false; + slice.setStatus(reportSyncStatusAs, true, false, false, null, + newEmailCount); + return undefined; + }.bind(this); + + // If the slice is dead, its startTS and endTS will be set to + // null, so there is no range available to refresh. (See Bug 941991.) + if (slice.isDead) { + console.log('MailSlice: Attempted to refresh a dead slice.'); + doneCallback('unknown'); + return; + } + slice.waitingOnData = 'refresh'; var startTS = slice.startTS, endTS = slice.endTS, @@ -7911,26 +7939,6 @@ FolderStorage.prototype = { if (startTS) startTS = quantizeDate(startTS); - var doneCallback = function refreshDoneCallback(err, bisectInfo, - numMessages) { - slice._onAddingHeader = null; - - var reportSyncStatusAs = 'synced'; - switch (err) { - case 'aborted': - case 'unknown': - reportSyncStatusAs = 'syncfailed'; - break; - } - - releaseMutex(); - slice.waitingOnData = false; - slice.setStatus(reportSyncStatusAs, true, false, false, null, - newEmailCount); - return undefined; - }.bind(this); - - // In the initial open case, we support a constant that allows us to // fast-path out without bothering the server. if (checkOpenRecency) {