if (GetServerStateParser().GetDownloadingHeaders()) { if (m_imapMailFolderSink && downloadLineDontDelete) { m_imapMailFolderSink->ParseAdoptedHeaderLine(this, downloadLineDontDelete->adoptedMessageLine, downloadLineDontDelete->uidOfMessage); } }  else
if (!GetServerStateParser().GetDownloadingHeaders())
nsImapProtocol::PostLineDownLoadEvent(msg_line_info *downloadLineDontDelete){    NS_ASSERTION(downloadLineDontDelete,                  "Oops... null msg line info not good");  if (GetServerStateParser().GetDownloadingHeaders())  {    if (m_imapMailFolderSink && downloadLineDontDelete)    {      m_imapMailFolderSink->ParseAdoptedHeaderLine(this, downloadLineDontDelete->adoptedMessageLine, downloadLineDontDelete->uidOfMessage);    }  }  else   {    PRBool echoLineToMessageSink = PR_TRUE;    // if we have a channel listener, then just spool the message    // directly to the listener    if (m_channelListener)    {      PRUint32 count = 0;      char * line = downloadLineDontDelete->adoptedMessageLine;      if (m_channelOutputStream)      {        nsresult rv = m_channelOutputStream->Write(line, PL_strlen(line), &count);        if (NS_SUCCEEDED(rv))        {          nsCOMPtr<nsIRequest> request = do_QueryInterface(m_mockChannel);          m_channelListener->OnDataAvailable(request, m_channelContext, m_channelInputStream, 0, count);         }          // here is where we should echo the line to the local folder copy of an online message      }      if (m_imapMessageSink)        m_imapMessageSink->GetNotifyDownloadedLines(&echoLineToMessageSink);    }    if (m_imapMessageSink && downloadLineDontDelete && echoLineToMessageSink)    {      m_imapMessageSink->ParseAdoptedMsgLine(downloadLineDontDelete->adoptedMessageLine,       downloadLineDontDelete->uidOfMessage);    }  }  // ***** We need to handle the psuedo interrupt here *****}