mirror of
https://github.com/moparisthebest/k-9
synced 2025-02-25 15:11:52 -05:00
. Large messages are now only retrieved once for POP3 servers that don't support the TOP command
This commit is contained in:
parent
e844f4ab0c
commit
5b0dee8cc0
@ -933,13 +933,41 @@ s * critical data as fast as possible, and then we'll fill in the de
|
||||
ArrayList<Message> largeMessages = new ArrayList<Message>();
|
||||
ArrayList<Message> smallMessages = new ArrayList<Message>();
|
||||
for (Message message : unsyncedMessages) {
|
||||
/*
|
||||
* Some (POP3) servers only support full message download
|
||||
* and not header/partial so messages may already be downloaded
|
||||
*/
|
||||
if (message.isSet(Flag.X_DOWNLOADED_FULL)) {
|
||||
try {
|
||||
// Store the updated message locally
|
||||
localFolder.appendMessages(new Message[]{
|
||||
message
|
||||
});
|
||||
|
||||
Message localMessage = localFolder.getMessage(message.getUid());
|
||||
|
||||
// Set a flag indicating this message has now be fully downloaded
|
||||
localMessage.setFlag(Flag.X_DOWNLOADED_FULL, true);
|
||||
if (isMessageSuppressed(account, folder, localMessage) == false) {
|
||||
// Update the listener with what we've found
|
||||
for (MessagingListener l : getListeners()) {
|
||||
l.synchronizeMailboxNewMessage(
|
||||
account,
|
||||
folder,
|
||||
localMessage);
|
||||
}
|
||||
}
|
||||
} catch (MessagingException me) {
|
||||
addErrorMessage(account, me);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Sort the messages into two buckets, small and large. Small messages will be
|
||||
* downloaded fully and large messages will be downloaded in parts. By sorting
|
||||
* into two buckets we can pipeline the commands for each set of messages
|
||||
* into a single command to the server saving lots of round trips.
|
||||
*/
|
||||
if (message.getSize() > (MAX_SMALL_MESSAGE_SIZE)) {
|
||||
else if (message.getSize() > (MAX_SMALL_MESSAGE_SIZE)) {
|
||||
largeMessages.add(message);
|
||||
} else {
|
||||
smallMessages.add(message);
|
||||
@ -947,8 +975,11 @@ s * critical data as fast as possible, and then we'll fill in the de
|
||||
}
|
||||
|
||||
if (Config.LOGV) {
|
||||
Log.v(Email.LOG_TAG, "SYNC: Have " + largeMessages.size() + " large messages and "
|
||||
+ smallMessages.size() + " small messages to fetch for folder " + folder);
|
||||
Log.v(Email.LOG_TAG, "SYNC: Have "
|
||||
+ largeMessages.size() + " large messages and "
|
||||
+ smallMessages.size() + " small messages out of "
|
||||
+ unsyncedMessages.size() + " un synced messages "
|
||||
+ " to fetch for folder " + folder);
|
||||
}
|
||||
|
||||
|
||||
|
@ -666,6 +666,9 @@ public class Pop3Store extends Store {
|
||||
if (response != null) {
|
||||
try {
|
||||
message.parse(new Pop3ResponseInputStream(mIn));
|
||||
if (lines == -1 || !mCapabilities.top) {
|
||||
message.setFlag(Flag.X_DOWNLOADED_FULL, true);
|
||||
}
|
||||
}
|
||||
catch (MessagingException me) {
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user