better fix for imap servers that return message size before uid, sr=mscott 246966

This commit is contained in:
bienvenu%nventure.com 2005-09-22 01:39:56 +00:00
Родитель f8d4a50dc6
Коммит d86299f272
1 изменённых файлов: 7 добавлений и 6 удалений

Просмотреть файл

@ -1053,7 +1053,7 @@ void nsImapServerResponseParser::msg_fetch()
// we have not seen a uid response or flags for this fetch, yet
fCurrentResponseUID = 0;
fCurrentLineContainedFlagInfo = PR_FALSE;
fSizeOfMostRecentMessage = 0;
// show any incremental progress, for instance, for header downloading
fServerConnection.ShowProgress();
@ -1088,7 +1088,9 @@ void nsImapServerResponseParser::msg_fetch()
fCurrentResponseUID = atoi(fNextToken);
if (fCurrentResponseUID > fHighestRecordedUID)
fHighestRecordedUID = fCurrentResponseUID;
// size came before UID
if (fSizeOfMostRecentMessage)
fReceivedHeaderOrSizeForUID = CurrentResponseUID();
// if this token ends in ')', then it is the last token
// else we advance
if ( *(fNextToken + strlen(fNextToken) - 1) == ')')
@ -2062,13 +2064,12 @@ void nsImapServerResponseParser::msg_fetch_content(PRBool chunk, PRInt32 origin,
// complete the message download
if (ContinueParse())
{
if (fReceivedHeaderOrSizeForUID == CurrentResponseUID() || !fDownloadingHeaders)
if (fReceivedHeaderOrSizeForUID == CurrentResponseUID())
{
fServerConnection.NormalMessageEndDownload();
if (fDownloadingHeaders)
fReceivedHeaderOrSizeForUID = nsMsgKey_None;
fReceivedHeaderOrSizeForUID = nsMsgKey_None;
}
else if (fDownloadingHeaders)
else
fReceivedHeaderOrSizeForUID = CurrentResponseUID();
}
else