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) {