Bug 512006: respect nonProxyHosts setting when fetching indexes
Change-Id: Id7597424219c0037eac4cc33190c9706a940df6d
Signed-off-by: Fred Bricon <fbricon@gmail.com>
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/AetherClientResourceFetcher.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/AetherClientResourceFetcher.java
index 64e1fb7..c549248 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/AetherClientResourceFetcher.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/AetherClientResourceFetcher.java
@@ -20,6 +20,8 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
@@ -36,6 +38,7 @@
import org.apache.maven.index.updater.AbstractResourceFetcher;
import org.apache.maven.wagon.authentication.AuthenticationInfo;
import org.apache.maven.wagon.proxy.ProxyInfo;
+import org.apache.maven.wagon.proxy.ProxyUtils;
import org.eclipse.m2e.core.internal.MavenPluginActivator;
import org.eclipse.m2e.core.internal.Messages;
@@ -70,10 +73,11 @@
this.userAgent = MavenPluginActivator.getUserAgent();
}
- public void connect(String id, String url) throws IOException {
- aetherClient = new OkHttpAetherClient(new AetherClientConfigAdapter(authInfo, proxyInfo, userAgent,
- new HashMap<String, String>()));
+ public void connect(String id, String url) {
this.baseUrl = url;
+ aetherClient = new OkHttpAetherClient(
+ new AetherClientConfigAdapter(baseUrl, authInfo, proxyInfo, userAgent,
+ new HashMap<String, String>()));
}
public void disconnect() throws IOException {
@@ -110,10 +114,13 @@
String userAgent;
+ String baseUrl;
+
Map<String, String> headers;
- public AetherClientConfigAdapter(AuthenticationInfo authInfo, ProxyInfo proxyInfo, String userAgent,
+ public AetherClientConfigAdapter(String baseUrl, AuthenticationInfo authInfo, ProxyInfo proxyInfo, String userAgent,
Map<String, String> headers) {
+ this.baseUrl = baseUrl;
this.authInfo = authInfo;
this.proxyInfo = proxyInfo;
this.userAgent = userAgent;
@@ -144,6 +151,13 @@
if(proxyInfo == null) {
return null;
}
+ //Bug 512006 don't return the proxy for nonProxyHosts
+ try {
+ if(ProxyUtils.validateNonProxyHosts(proxyInfo, new URL(baseUrl).getHost())) {
+ return null;
+ }
+ } catch(MalformedURLException ignore) {
+ }
return new AetherClientProxy() {