< prev index next >

src/java.base/share/classes/sun/net/spi/DefaultProxySelector.java

Print this page
rev 16207 : 8170868: DefaultProxySelector should use system defaults on Windows, MacOS and Gnome
Contributed-by: arno.zeller@sap.com

*** 1,7 **** /* ! * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 28,38 **** import java.net.InetSocketAddress; import java.net.Proxy; import java.net.ProxySelector; import java.net.SocketAddress; import java.net.URI; ! import java.util.ArrayList; import java.util.List; import java.io.IOException; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.StringJoiner; --- 28,38 ---- import java.net.InetSocketAddress; import java.net.Proxy; import java.net.ProxySelector; import java.net.SocketAddress; import java.net.URI; ! import java.util.Arrays; import java.util.List; import java.io.IOException; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.StringJoiner;
*** 85,94 **** --- 85,96 ---- private static final String SOCKS_PROXY_VERSION = "socksProxyVersion"; private static boolean hasSystemProxies = false; + private static final List<Proxy> NO_PROXY_LIST = List.of(Proxy.NO_PROXY); + static { final String key = "java.net.useSystemProxies"; Boolean b = AccessController.doPrivileged( new PrivilegedAction<Boolean>() { public Boolean run() {
*** 147,158 **** /** * select() method. Where all the hard work is done. * Build a list of proxies depending on URI. * Since we're only providing compatibility with the system properties ! * from previous releases (see list above), that list will always ! * contain 1 single proxy, default being NO_PROXY. */ public java.util.List<Proxy> select(URI uri) { if (uri == null) { throw new IllegalArgumentException("URI can't be null."); } --- 149,161 ---- /** * select() method. Where all the hard work is done. * Build a list of proxies depending on URI. * Since we're only providing compatibility with the system properties ! * from previous releases (see list above), that list will typically ! * contain one single proxy, default being NO_PROXY. ! * If we can get a system proxy it might contain more entries. */ public java.util.List<Proxy> select(URI uri) { if (uri == null) { throw new IllegalArgumentException("URI can't be null."); }
*** 183,193 **** } if (protocol == null || host == null) { throw new IllegalArgumentException("protocol = "+protocol+" host = "+host); } - List<Proxy> proxyl = new ArrayList<Proxy>(1); NonProxyInfo pinfo = null; if ("http".equalsIgnoreCase(protocol)) { pinfo = NonProxyInfo.httpNonProxyInfo; --- 186,195 ----
*** 212,224 **** * This is one big doPrivileged call, but we're trying to optimize * the code as much as possible. Since we're checking quite a few * System properties it does help having only 1 call to doPrivileged. * Be mindful what you do in here though! */ ! Proxy p = AccessController.doPrivileged( ! new PrivilegedAction<Proxy>() { ! public Proxy run() { int i, j; String phost = null; int pport = 0; String nphosts = null; InetSocketAddress saddr = null; --- 214,226 ---- * This is one big doPrivileged call, but we're trying to optimize * the code as much as possible. Since we're checking quite a few * System properties it does help having only 1 call to doPrivileged. * Be mindful what you do in here though! */ ! Proxy[] proxyArray = AccessController.doPrivileged( ! new PrivilegedAction<Proxy[]>() { ! public Proxy[] run() { int i, j; String phost = null; int pport = 0; String nphosts = null; InetSocketAddress saddr = null;
*** 237,261 **** } if (phost == null || phost.length() == 0) { /** * No system property defined for that * protocol. Let's check System Proxy ! * settings (Gnome & Windows) if we were ! * instructed to. */ if (hasSystemProxies) { String sproto; if (proto.equalsIgnoreCase("socket")) sproto = "socks"; else sproto = proto; ! Proxy sproxy = getSystemProxy(sproto, urlhost); ! if (sproxy != null) { ! return sproxy; ! } } ! return Proxy.NO_PROXY; } // If a Proxy Host is defined for that protocol // Let's get the NonProxyHosts property if (nprop != null) { nphosts = NetProperties.get(nprop.property); --- 239,260 ---- } if (phost == null || phost.length() == 0) { /** * No system property defined for that * protocol. Let's check System Proxy ! * settings (Gnome, MacOsX & Windows) if ! * we were instructed to. */ if (hasSystemProxies) { String sproto; if (proto.equalsIgnoreCase("socket")) sproto = "socks"; else sproto = proto; ! return getSystemProxies(sproto, urlhost); } ! return null; } // If a Proxy Host is defined for that protocol // Let's get the NonProxyHosts property if (nprop != null) { nphosts = NetProperties.get(nprop.property);
*** 279,289 **** nprop.pattern = toPattern(nphosts); nprop.hostsSource = nphosts; } } if (shouldNotUseProxyFor(nprop.pattern, urlhost)) { ! return Proxy.NO_PROXY; } } } // We got a host, let's check for port --- 278,288 ---- nprop.pattern = toPattern(nphosts); nprop.hostsSource = nphosts; } } if (shouldNotUseProxyFor(nprop.pattern, urlhost)) { ! return null; } } } // We got a host, let's check for port
*** 309,334 **** // Let's create the address, but don't resolve it // as this will be done at connection time saddr = InetSocketAddress.createUnresolved(phost, pport); // Socks is *always* the last on the list. if (j == (props[i].length - 1)) { ! return SocksProxy.create(saddr, socksProxyVersion()); ! } else { ! return new Proxy(Proxy.Type.HTTP, saddr); } } } ! return Proxy.NO_PROXY; }}); ! proxyl.add(p); ! ! /* ! * If no specific property was set for that URI, we should be ! * returning an iterator to an empty List. ! */ ! return proxyl; } public void connectFailed(URI uri, SocketAddress sa, IOException ioe) { if (uri == null || sa == null || ioe == null) { throw new IllegalArgumentException("Arguments can't be null."); --- 308,328 ---- // Let's create the address, but don't resolve it // as this will be done at connection time saddr = InetSocketAddress.createUnresolved(phost, pport); // Socks is *always* the last on the list. if (j == (props[i].length - 1)) { ! return new Proxy[] {SocksProxy.create(saddr, socksProxyVersion())}; } + return new Proxy[] {new Proxy(Proxy.Type.HTTP, saddr)}; } } ! return null; }}); ! // If no specific proxy was found we return our standard list containing ! // only one NO_PROXY entry. ! return proxyArray == null ? NO_PROXY_LIST : List.of(proxyArray); } public void connectFailed(URI uri, SocketAddress sa, IOException ioe) { if (uri == null || sa == null || ioe == null) { throw new IllegalArgumentException("Arguments can't be null.");
*** 352,362 **** return -1; } } private static native boolean init(); ! private synchronized native Proxy getSystemProxy(String protocol, String host); /** * @return {@code true} if given this pattern for non-proxy hosts and this * urlhost the proxy should NOT be used to access this urlhost */ --- 346,356 ---- return -1; } } private static native boolean init(); ! private synchronized native Proxy[] getSystemProxies(String protocol, String host); /** * @return {@code true} if given this pattern for non-proxy hosts and this * urlhost the proxy should NOT be used to access this urlhost */
< prev index next >