Index: trunk/src/org/openstreetmap/josm/data/oauth/OAuthParameters.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/oauth/OAuthParameters.java	(revision 18650)
+++ trunk/src/org/openstreetmap/josm/data/oauth/OAuthParameters.java	(revision 18651)
@@ -100,5 +100,5 @@
         final String redirectUri;
         final String baseUrl;
-        if (apiUrl != null && !Config.getUrls().getDefaultOsmApiUrl().equals(apiUrl)) {
+        if (apiUrl != null && !Config.getUrls().getDefaultOsmApiUrl().equals(apiUrl) && !"http://invalid".equals(apiUrl)) {
             clientId = "";
             clientSecret = "";
Index: trunk/src/org/openstreetmap/josm/io/OsmConnection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmConnection.java	(revision 18650)
+++ trunk/src/org/openstreetmap/josm/io/OsmConnection.java	(revision 18651)
@@ -11,6 +11,6 @@
 import java.util.Base64;
 import java.util.Objects;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.function.Consumer;
 
@@ -214,5 +214,5 @@
             RemoteControl.start();
         }
-        AtomicBoolean done = new AtomicBoolean();
+        CountDownLatch done = new CountDownLatch(1);
         Consumer<IOAuthToken> consumer = authToken -> {
                     if (!remoteControlIsRunning) {
@@ -223,8 +223,5 @@
                     OAuthAccessTokenHolder.getInstance().setAccessToken(OsmApi.getOsmApi().getServerUrl(), authToken);
                     OAuthAccessTokenHolder.getInstance().save(CredentialsManager.getInstance());
-                    synchronized (done) {
-                        done.set(true);
-                        done.notifyAll();
-                    }
+                    done.countDown();
                 };
         new OAuth20Authorization().authorize(oAuth20Parameters,
@@ -235,7 +232,9 @@
             // Only wait at most 5 minutes
             int counter = 0;
-            while (!done.get() && counter < 5) {
+            while (done.getCount() >= 0 && counter < 5) {
                 try {
-                    done.wait(TimeUnit.MINUTES.toMillis(1));
+                    if (done.await(1, TimeUnit.MINUTES)) {
+                        break;
+                    }
                 } catch (InterruptedException e) {
                     Thread.currentThread().interrupt();
