< prev index next >

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

Print this page

        

@@ -28,20 +28,23 @@
 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.Collections;
 import java.util.List;
 import java.io.IOException;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.StringJoiner;
 import java.util.regex.Pattern;
+import java.util.stream.Stream;
 import sun.net.NetProperties;
 import sun.net.SocksProxy;
 import static java.util.regex.Pattern.quote;
+import static java.util.stream.Collectors.collectingAndThen;
+import static java.util.stream.Collectors.toList;
 
 /**
  * Supports proxy settings using system properties This proxy selector
  * provides backward compatibility with the old http protocol handler
  * as far as how proxy is set

@@ -316,13 +319,20 @@
                         }
                     }
                     return null;
                 }});
 
-        // If no specific proxy was found we return our standard list containing
+
+        if (proxyArray != null) {
+            // Remove duplicate entries, while preserving order.
+            return Stream.of(proxyArray).distinct().collect(
+                    collectingAndThen(toList(), Collections::unmodifiableList));
+        }
+
+        // If no specific proxy was found, return a standard list containing
         // only one NO_PROXY entry.
-        return proxyArray == null ? NO_PROXY_LIST : List.of(proxyArray);
+        return NO_PROXY_LIST;
     }
 
     public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
         if (uri == null || sa == null || ioe == null) {
             throw new IllegalArgumentException("Arguments can't be null.");
< prev index next >