From ab0144bd4260eddd0b65f2f666c280293ec1c667 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 2 Dec 2020 12:00:35 +0100 Subject: [PATCH] Log IMAP capabilities --- .../java/com/sun/mail/imap/IMAPStore.java | 13 ++++++++++ .../eu/faircode/email/ServiceSynchronize.java | 10 +++++++- patches/JavaMail.patch | 24 +++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/sun/mail/imap/IMAPStore.java b/app/src/main/java/com/sun/mail/imap/IMAPStore.java index 087e5a6f5f..5fa720f3d2 100644 --- a/app/src/main/java/com/sun/mail/imap/IMAPStore.java +++ b/app/src/main/java/com/sun/mail/imap/IMAPStore.java @@ -1571,6 +1571,19 @@ public class IMAPStore extends Store } } + public synchronized Map getCapabilities() + throws MessagingException { + IMAPProtocol p = null; + try { + p = getStoreProtocol(); + return p.getCapabilities(); + } catch (ProtocolException pex) { + throw new MessagingException(pex.getMessage(), pex); + } finally { + releaseStoreProtocol(p); + } + } + /** * Set the user name to be used with the PROXYAUTH command. * The PROXYAUTH user name can also be set using the diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index e14ffe045c..2155b15b7b 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -77,6 +77,7 @@ import javax.mail.MessagingException; import javax.mail.NoSuchProviderException; import javax.mail.Quota; import javax.mail.ReadOnlyFolderException; +import javax.mail.Store; import javax.mail.StoreClosedException; import javax.mail.event.FolderAdapter; import javax.mail.event.FolderEvent; @@ -1037,7 +1038,14 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences db.account().setAccountState(account.id, "connected"); db.account().setAccountError(account.id, null); db.account().setAccountWarning(account.id, null); - EntityLog.log(this, account.name + " connected"); + + Store istore = iservice.getStore(); + if (istore instanceof IMAPStore) { + Map caps = ((IMAPStore) istore).getCapabilities(); + EntityLog.log(this, account.name + " connected" + + " caps=" + (caps == null ? null : TextUtils.join(" ", caps.keySet()))); + } else + EntityLog.log(this, account.name + " connected"); db.account().setAccountMaxSize(account.id, iservice.getMaxSize()); diff --git a/patches/JavaMail.patch b/patches/JavaMail.patch index 5ba501ff20..fb5dc10c70 100644 --- a/patches/JavaMail.patch +++ b/patches/JavaMail.patch @@ -379,3 +379,27 @@ diff -rupN /home/marcel/JavaMail/mail/src/main/java/com/sun/mail/imap/protocol/I } } } +diff --git a/app/src/main/java/com/sun/mail/imap/IMAPStore.java b/app/src/main/java/com/sun/mail/imap/IMAPStore.java +index 087e5a6f5..5fa720f3d 100644 +--- a/app/src/main/java/com/sun/mail/imap/IMAPStore.java ++++ b/app/src/main/java/com/sun/mail/imap/IMAPStore.java +@@ -1571,6 +1571,19 @@ public class IMAPStore extends Store + } + } + ++ public synchronized Map getCapabilities() ++ throws MessagingException { ++ IMAPProtocol p = null; ++ try { ++ p = getStoreProtocol(); ++ return p.getCapabilities(); ++ } catch (ProtocolException pex) { ++ throw new MessagingException(pex.getMessage(), pex); ++ } finally { ++ releaseStoreProtocol(p); ++ } ++ } ++ + /** + * Set the user name to be used with the PROXYAUTH command. + * The PROXYAUTH user name can also be set using the