fix problems parsing certain imap headers with new hdr downloading code, r/sr=sspitzer, 19552

This commit is contained in:
bienvenu%netscape.com 2002-08-29 23:51:43 +00:00
parent 262d589fd7
commit 1a9c161c73
2 changed files with 12 additions and 1 deletions

View File

@ -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);

View File

@ -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