Fixed POP3 message limit

pull/199/head
M66B 4 years ago
parent a3858b15ef
commit bebdc52499

@ -2266,6 +2266,7 @@ class Core {
db.folder().setFolderSyncState(folder.id, "syncing"); db.folder().setFolderSyncState(folder.id, "syncing");
Map<String, String> caps = istore.capabilities(); Map<String, String> caps = istore.capabilities();
boolean hasUidl = caps.containsKey("UIDL");
EntityLog.log(context, folder.name + " POP capabilities= " + caps.keySet()); EntityLog.log(context, folder.name + " POP capabilities= " + caps.keySet());
Message[] imessages = ifolder.getMessages(); Message[] imessages = ifolder.getMessages();
@ -2274,19 +2275,24 @@ class Core {
max = imessages.length; max = imessages.length;
else else
max = Math.min(imessages.length, Math.max(account.max_messages * 2, 100)); max = Math.min(imessages.length, Math.max(account.max_messages * 2, 100));
EntityLog.log(context, folder.name + " POP messages=" + imessages.length + int count = (account.max_messages == null ? imessages.length : account.max_messages);
" max=" + max + "/" + account.max_messages);
boolean hasUidl = caps.containsKey("UIDL"); List<TupleUidl> 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) { if (hasUidl) {
FetchProfile ifetch = new FetchProfile(); FetchProfile ifetch = new FetchProfile();
ifetch.add(UIDFolder.FetchProfileItem.UID); // This will fetch all UIDs ifetch.add(UIDFolder.FetchProfileItem.UID); // This will fetch all UIDs
ifolder.fetch(imessages, ifetch); ifolder.fetch(imessages, ifetch);
} }
List<TupleUidl> ids = db.message().getUidls(folder.id);
EntityLog.log(context, folder.name + " POP existing=" + ids.size() + " uidl=" + hasUidl);
// Index UIDLs // Index UIDLs
Map<String, String> uidlMsgId = new HashMap<>(); Map<String, String> uidlMsgId = new HashMap<>();
for (TupleUidl id : ids) 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]; Message imessage = imessages[i];
try { try {
if (!state.isRunning()) if (!state.isRunning())

Loading…
Cancel
Save