From 2f69ed42e1f5f5124079d1699fbac348086e4a54 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 22 Jun 2021 17:35:27 +0200 Subject: [PATCH] POP3: improvements --- app/src/main/java/eu/faircode/email/Core.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 05ad08b31a..cd9b8313be 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -2256,16 +2256,18 @@ class Core { EntityLog.log(context, folder.name + " POP capabilities= " + caps.keySet()); Message[] imessages = ifolder.getMessages(); - int max = (account.max_messages == null ? imessages.length : Math.max(account.max_messages * 2, 100)); + int max; + if (account.max_messages == null) + 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); - if (imessages.length > max) - imessages = Arrays.copyOfRange(imessages, imessages.length - max, imessages.length); boolean hasUidl = caps.containsKey("UIDL"); if (hasUidl) { FetchProfile ifetch = new FetchProfile(); - ifetch.add(UIDFolder.FetchProfileItem.UID); + ifetch.add(UIDFolder.FetchProfileItem.UID); // This will fetch all UIDs ifolder.fetch(imessages, ifetch); } @@ -2303,7 +2305,8 @@ class Core { if (id.msgid != null) known.put(id.msgid, id); - for (Message imessage : imessages) { + for (int i = imessages.length - max; i < imessages.length; i++) { + Message imessage = imessages[i]; MessageHelper helper = new MessageHelper((MimeMessage) imessage, context); String msgid = helper.getMessageID(); // expensive! if (!TextUtils.isEmpty(msgid)) @@ -2317,12 +2320,7 @@ class Core { } } - for (int i = 0; i < imessages.length; i++) { - if (account.max_messages != null && i >= account.max_messages) { - EntityLog.log(context, folder.name + " POP reached max=" + account.max_messages); - break; - } - + for (int i = imessages.length - max; i < imessages.length; i++) { Message imessage = imessages[i]; try { if (!state.isRunning())