fix 249607 handle case of multiple pop3 servers downloading to same inbox on startup, sr=mscott

git-svn-id: svn://10.0.0.236/trunk@159632 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bienvenu%nventure.com
2004-07-22 03:58:14 +00:00
parent 0a13b4ddd6
commit ac74005d8a

View File

@@ -712,6 +712,7 @@ function GetInboxFolder(server)
function GetMessagesForInboxOnServer(server)
{
dump ("GetMessagesForInboxOnServer uri = " + server.serverURI + "\n");
var inboxFolder = GetInboxFolder(server);
if (!inboxFolder) return;
@@ -737,6 +738,11 @@ function MsgGetMessagesForAllServers(defaultServer)
try
{
var allServers = accountManager.allServers;
var firstPop3DownloadServer;
// these arrays are parallel
var pop3DownloadServersArray = new Array; // array of isupportsarrays of servers for a particular folder
var localFoldersToDownloadTo; // isupports array of folders to download to...
for (var i=0;i<allServers.Count();i++)
{
@@ -750,11 +756,38 @@ function MsgGetMessagesForAllServers(defaultServer)
}
else
{
if (currentServer.type == "pop3" && currentServer.downloadOnBiff)
{
var outNumFolders = new Object();
var inboxFolder = currentServer.rootMsgFolder.getFoldersWithFlag(0x1000, 1, outNumFolders);
pop3Server = currentServer.QueryInterface(Components.interfaces.nsIPop3IncomingServer);
if (!localFoldersToDownloadTo)
localFoldersToDownloadTo = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
// coalesce the servers that download into the same folder...
var index = localFoldersToDownloadTo.GetIndexOf(inboxFolder);
if (index == -1)
{
localFoldersToDownloadTo.AppendElement(inboxFolder);
index = pop3DownloadServersArray.length
pop3DownloadServersArray[index] = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
pop3DownloadServersArray[index].AppendElement(currentServer);
}
else
{
pop3DownloadServersArray[index].AppendElement(currentServer);
}
}
else
// Check to see if there are new messages on the server
currentServer.PerformBiff(msgWindow);
}
}
}
for (var i = 0; i < pop3DownloadServersArray.length; i++)
{
// any ol' pop3Server will do - the serversArray specifies which servers to download from
pop3Server.downloadMailFromServers(pop3DownloadServersArray[i], msgWindow, localFoldersToDownloadTo.GetElementAt(i), null);
}
}
catch(ex)
{