From 9dc426b9fb88fa5dae0482ff911ef4e5009f07c2 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 22 Jun 2021 13:18:49 +0200 Subject: [PATCH] POP3: lookahead headers --- app/src/main/java/eu/faircode/email/Core.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index c0d8ed7beb..584df84a3f 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -2254,11 +2254,11 @@ class Core { EntityLog.log(context, folder.name + " POP capabilities= " + caps.keySet()); Message[] imessages = ifolder.getMessages(); - EntityLog.log(context, folder.name + " POP messages=" + imessages.length); - - if (account.max_messages != null && imessages.length > account.max_messages) - imessages = Arrays.copyOfRange(imessages, - imessages.length - account.max_messages, imessages.length); + int max = (account.max_messages == null ? 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) { @@ -2315,7 +2315,13 @@ class Core { } } - for (Message imessage : imessages) + 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; + } + + Message imessage = imessages[i]; try { if (!state.isRunning()) return; @@ -2504,6 +2510,7 @@ class Core { } finally { ((POP3Message) imessage).invalidate(true); } + } db.folder().setFolderLastSync(folder.id, new Date().getTime()); EntityLog.log(context, folder.name + " POP done");