From bebdc5249972f96facbf025e6650a567a47586ee Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 25 Jun 2021 15:55:16 +0200 Subject: [PATCH] Fixed POP3 message limit --- app/src/main/java/eu/faircode/email/Core.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 1f78751e1e..e124ad11f2 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -2266,6 +2266,7 @@ class Core { db.folder().setFolderSyncState(folder.id, "syncing"); Map caps = istore.capabilities(); + boolean hasUidl = caps.containsKey("UIDL"); EntityLog.log(context, folder.name + " POP capabilities= " + caps.keySet()); Message[] imessages = ifolder.getMessages(); @@ -2274,19 +2275,24 @@ class Core { max = imessages.length; else max = Math.min(imessages.length, Math.max(account.max_messages * 2, 100)); - EntityLog.log(context, folder.name + " POP messages=" + imessages.length + - " max=" + max + "/" + account.max_messages); + int count = (account.max_messages == null ? imessages.length : account.max_messages); - boolean hasUidl = caps.containsKey("UIDL"); + List ids = db.message().getUidls(folder.id); + + EntityLog.log(context, folder.name + " POP" + + " device=" + ids.size() + + " server=" + imessages.length + + " count=" + count + + " max=" + max + "/" + account.max_messages + + " uidl=" + hasUidl); + + // Fetch UIDLs if (hasUidl) { FetchProfile ifetch = new FetchProfile(); ifetch.add(UIDFolder.FetchProfileItem.UID); // This will fetch all UIDs ifolder.fetch(imessages, ifetch); } - List ids = db.message().getUidls(folder.id); - EntityLog.log(context, folder.name + " POP existing=" + ids.size() + " uidl=" + hasUidl); - // Index UIDLs Map uidlMsgId = new HashMap<>(); for (TupleUidl id : ids) @@ -2333,7 +2339,7 @@ class Core { } } - for (int i = imessages.length - max; i < imessages.length; i++) { + for (int i = imessages.length - count; i < imessages.length; i++) { Message imessage = imessages[i]; try { if (!state.isRunning())