Ignore:
Timestamp:
2015-04-30T22:02:38+02:00 (9 years ago)
Author:
stoecker
Message:

fix #8562 - autodetect working IPv6 - hopefully solve bad Java IPv6 support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/Preferences.java

    r8100 r8295  
    1717import java.lang.annotation.RetentionPolicy;
    1818import java.lang.reflect.Field;
     19import java.net.InetAddress;
     20import java.net.Inet6Address;
    1921import java.nio.charset.StandardCharsets;
    2022import java.nio.file.Files;
     
    925927            }
    926928        }
     929        if("auto".equals(get("prefer.ipv6", "auto"))) {
     930             new Thread(new Runnable() { /* this may take some time (DNS, Connect) */
     931                public void run() {
     932                    boolean hasv6 = false;
     933                    try {
     934                        /* Use the check result from last run of the software, as after the test value
     935                           changes have no effect anymore */
     936                        if(getBoolean("validated.ipv6", false)) {
     937                            Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true");
     938                        }
     939                        for(InetAddress a : InetAddress.getAllByName("josm.openstreetmap.de")) {
     940                            if(a instanceof Inet6Address) {
     941                                if(a.isReachable(1000)) {
     942                                    Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true");
     943                                    if(!getBoolean("validated.ipv6", false)) {
     944                                        Main.info(tr("Automatics detected useable IPv6 network, prefering IPv6 over IPv4 after next restart."));
     945                                    } else {
     946                                        Main.info(tr("Automatics detected useable IPv6 network, prefering IPv6 over IPv4."));
     947                                    }
     948                                    hasv6 = true;
     949                                }
     950                                break; /* we're done */
     951                            }
     952                        }
     953                    } catch (Exception e) {
     954                    }
     955                    put("validated.ipv6", hasv6);
     956                }
     957            }).start();
     958        }
    927959    }
    928960
     
    13731405     */
    13741406    public void updateSystemProperties() {
    1375         if(getBoolean("prefer.ipv6", false)) {
     1407        if("true".equals(get("prefer.ipv6", "auto"))) {
    13761408            // never set this to false, only true!
    13771409            Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true");
Note: See TracChangeset for help on using the changeset viewer.