From 3db1eff23d9acf4b5ae9842da7dc8c6aecb20b3c Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 28 Aug 2022 09:02:48 +0200 Subject: [PATCH] Added OAuth fail-safe --- .../main/java/eu/faircode/email/ServiceAuthenticator.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/ServiceAuthenticator.java b/app/src/main/java/eu/faircode/email/ServiceAuthenticator.java index aec9a0bc29..24ecccbe46 100644 --- a/app/src/main/java/eu/faircode/email/ServiceAuthenticator.java +++ b/app/src/main/java/eu/faircode/email/ServiceAuthenticator.java @@ -38,6 +38,7 @@ import java.io.IOException; import java.util.Date; import java.util.Objects; import java.util.concurrent.Semaphore; +import java.util.concurrent.TimeUnit; import javax.mail.Authenticator; import javax.mail.MessagingException; @@ -57,6 +58,7 @@ public class ServiceAuthenticator extends Authenticator { static final long MIN_REFRESH_INTERVAL = 15 * 60 * 1000L; static final long MIN_FORCE_REFRESH_INTERVAL = 15 * 60 * 1000L; + static final int MAX_TOKEN_WAIT = 90; // seconds ServiceAuthenticator( Context context, @@ -189,7 +191,9 @@ public class ServiceAuthenticator extends Authenticator { } }); - semaphore.acquire(); + if (!semaphore.tryAcquire(MAX_TOKEN_WAIT, TimeUnit.SECONDS)) + throw new InterruptedException("Timeout getting token id=" + id); + Log.i("OAuth refreshed user=" + id + ":" + user); if (holder.error != null) {