diff --git a/mailnews/imap/src/nsImapProtocol.cpp b/mailnews/imap/src/nsImapProtocol.cpp index 9037381540e2..e885da1adcc6 100644 --- a/mailnews/imap/src/nsImapProtocol.cpp +++ b/mailnews/imap/src/nsImapProtocol.cpp @@ -89,6 +89,7 @@ #include "nsIWindowMediator.h" #include "nsIWindowWatcher.h" #include "nsCOMPtr.h" +#include "nsMimeTypes.h" PRLogModuleInfo *IMAP; // netlib required files @@ -3171,6 +3172,8 @@ void nsImapProtocol::HandleMessageDownLoadLine(const char *line, PRBool chunkEnd if (GetServerStateParser().GetDownloadingHeaders()) { + if (!m_curHdrInfo) + BeginMessageDownLoad(GetServerStateParser().SizeOfMostRecentMessage(), MESSAGE_RFC822); m_curHdrInfo->CacheLine(localMessageLine, GetServerStateParser().CurrentResponseUID()); PR_Free( localMessageLine); return; @@ -3225,6 +3228,7 @@ void nsImapProtocol::NormalMessageEndDownload() AdjustChunkSize(); if (m_imapMailFolderSink && GetServerStateParser().GetDownloadingHeaders()) { + m_curHdrInfo->SetMsgSize(GetServerStateParser().SizeOfMostRecentMessage()); m_hdrDownloadCache.FinishCurrentHdr(); PRUint32 numHdrsCached; m_hdrDownloadCache.GetNumHeaders(&numHdrsCached); diff --git a/mailnews/imap/src/nsImapServerResponseParser.cpp b/mailnews/imap/src/nsImapServerResponseParser.cpp index 26694e2fbea7..78f4cdfc3ed1 100644 --- a/mailnews/imap/src/nsImapServerResponseParser.cpp +++ b/mailnews/imap/src/nsImapServerResponseParser.cpp @@ -1220,12 +1220,19 @@ void nsImapServerResponseParser::msg_fetch() envelope_data(); } else if (!PL_strcasecmp(fNextToken, "INTERNALDATE")) + { + fDownloadingHeaders = PR_TRUE; // we only request internal date while downloading headers + if (!bNeedEndMessageDownload) + BeginMessageDownload(MESSAGE_RFC822); + bNeedEndMessageDownload = PR_TRUE; internal_date(); + } else if (!PL_strcasecmp(fNextToken, "XAOL-ENVELOPE")) { fDownloadingHeaders = PR_TRUE; - bNeedEndMessageDownload = PR_TRUE; + if (!bNeedEndMessageDownload) BeginMessageDownload(MESSAGE_RFC822); + bNeedEndMessageDownload = PR_TRUE; xaolenvelope_data(); } else