Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 8295)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 8296)
@@ -17,6 +17,4 @@
 import java.lang.annotation.RetentionPolicy;
 import java.lang.reflect.Field;
-import java.net.InetAddress;
-import java.net.Inet6Address;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
@@ -927,34 +925,4 @@
             }
         }
-        if("auto".equals(get("prefer.ipv6", "auto"))) {
-             new Thread(new Runnable() { /* this may take some time (DNS, Connect) */
-                public void run() {
-                    boolean hasv6 = false;
-                    try {
-                        /* Use the check result from last run of the software, as after the test value
-                           changes have no effect anymore */
-                        if(getBoolean("validated.ipv6", false)) {
-                            Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true");
-                        }
-                        for(InetAddress a : InetAddress.getAllByName("josm.openstreetmap.de")) {
-                            if(a instanceof Inet6Address) {
-                                if(a.isReachable(1000)) {
-                                    Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true");
-                                    if(!getBoolean("validated.ipv6", false)) {
-                                        Main.info(tr("Automatics detected useable IPv6 network, prefering IPv6 over IPv4 after next restart."));
-                                    } else {
-                                        Main.info(tr("Automatics detected useable IPv6 network, prefering IPv6 over IPv4."));
-                                    }
-                                    hasv6 = true;
-                                }
-                                break; /* we're done */
-                            }
-                        }
-                    } catch (Exception e) {
-                    }
-                    put("validated.ipv6", hasv6);
-                }
-            }).start();
-        }
     }
 
@@ -1407,5 +1375,7 @@
         if("true".equals(get("prefer.ipv6", "auto"))) {
             // never set this to false, only true!
-            Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true");
+            if(!"true".equals(Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true"))) {
+                Main.info(tr("Try enabling IPv6 network, prefering IPv4 over IPv6 (only works on early startup)."));
+            }
         }
         Utils.updateSystemProperty("http.agent", Version.getInstance().getAgentString());
Index: trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 8295)
+++ trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 8296)
@@ -16,4 +16,6 @@
 import java.io.InputStream;
 import java.net.Authenticator;
+import java.net.InetAddress;
+import java.net.Inet6Address;
 import java.net.ProxySelector;
 import java.net.URL;
@@ -363,8 +365,17 @@
         Main.pref.init(args.containsKey(Option.RESET_PREFERENCES));
 
+        if (args.containsKey(Option.SET)) {
+            for (String i : args.get(Option.SET)) {
+                String[] kv = i.split("=", 2);
+                Main.pref.put(kv[0], "null".equals(kv[1]) ? null : kv[1]);
+            }
+        }
+
         if (!languageGiven) {
             I18n.set(Main.pref.get("language", null));
         }
         Main.pref.updateSystemProperties();
+
+        checkIPv6();
 
         // asking for help? show help and exit
@@ -394,11 +405,4 @@
                     throw new RuntimeException(ex);
                 }
-            }
-        }
-
-        if (args.containsKey(Option.SET)) {
-            for (String i : args.get(Option.SET)) {
-                String[] kv = i.split("=", 2);
-                Main.pref.put(kv[0], "null".equals(kv[1]) ? null : kv[1]);
             }
         }
@@ -525,4 +529,45 @@
     }
 
+    /**
+     * Check if IPv6 can be safely enabled and do so. Because this cannot be done after network activation,
+     * disabling or enabling IPV6 may only be done with next start.
+     */
+    private static void checkIPv6() {
+        if("auto".equals(Main.pref.get("prefer.ipv6", "auto"))) {
+             new Thread(new Runnable() { /* this may take some time (DNS, Connect) */
+                public void run() {
+                    boolean hasv6 = false;
+                    boolean wasv6 = Main.pref.getBoolean("validated.ipv6", false);
+                    try {
+                        /* Use the check result from last run of the software, as after the test, value
+                           changes have no effect anymore */
+                        if(wasv6) {
+                            Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true");
+                        }
+                        for(InetAddress a : InetAddress.getAllByName("josm.openstreetmap.de")) {
+                            if(a instanceof Inet6Address) {
+                                if(a.isReachable(1000)) {
+                                    Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true");
+                                    if(!wasv6) {
+                                        Main.info(tr("Detected useable IPv6 network, prefering IPv6 over IPv4 after next restart."));
+                                    } else {
+                                        Main.info(tr("Detected useable IPv6 network, prefering IPv6 over IPv4."));
+                                    }
+                                    hasv6 = true;
+                                }
+                                break; /* we're done */
+                            }
+                        }
+                    } catch (Exception e) {
+                    }
+                    if(wasv6 && !hasv6) {
+                        Main.info(tr("Automatics detected no useable IPv6 network, prefering IPv4 over IPv6 after next restart."));
+                    }
+                    Main.pref.put("validated.ipv6", hasv6);
+                }
+            }).start();
+        }
+    }
+    
     private static class GuiFinalizationWorker implements Runnable {
 
