summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/net/Proxy.java49
1 files changed, 31 insertions, 18 deletions
diff --git a/core/java/android/net/Proxy.java b/core/java/android/net/Proxy.java
index 188a4aa0e6be..02ec137e0458 100644
--- a/core/java/android/net/Proxy.java
+++ b/core/java/android/net/Proxy.java
@@ -138,6 +138,7 @@ public final class Proxy {
*/
public static final java.net.Proxy getProxy(Context ctx, String url) {
sProxyInfoLock.readLock().lock();
+ java.net.Proxy retval;
try {
if (sGlobalProxyChangedObserver == null) {
registerContentObserversReadLocked(ctx);
@@ -147,16 +148,19 @@ public final class Proxy {
// Proxy defined - Apply exclusion rules
if (isURLInExclusionListReadLocked(url, sGlobalProxySpec.exclusionList)) {
// Return no proxy
- return java.net.Proxy.NO_PROXY;
- }
- java.net.Proxy retProxy =
- new java.net.Proxy(java.net.Proxy.Type.HTTP, sGlobalProxySpec.proxyAddress);
- sProxyInfoLock.readLock().unlock();
- if (isLocalHost(url)) {
- return java.net.Proxy.NO_PROXY;
+ retval = java.net.Proxy.NO_PROXY;
+ } else {
+ java.net.Proxy retProxy =
+ new java.net.Proxy(java.net.Proxy.Type.HTTP, sGlobalProxySpec.proxyAddress);
+ sProxyInfoLock.readLock().unlock();
+ if (isLocalHost(url)) {
+ sProxyInfoLock.readLock().lock();
+ retval = java.net.Proxy.NO_PROXY;
+ } else {
+ sProxyInfoLock.readLock().lock();
+ retval = retProxy;
+ }
}
- sProxyInfoLock.readLock().lock();
- return retProxy;
} else {
// If network is WiFi, return no proxy.
// Otherwise, return the Mobile Operator proxy.
@@ -164,17 +168,20 @@ public final class Proxy {
java.net.Proxy retProxy = getDefaultProxy(url);
sProxyInfoLock.readLock().unlock();
if (isLocalHost(url)) {
- return java.net.Proxy.NO_PROXY;
+ sProxyInfoLock.readLock().lock();
+ retval = java.net.Proxy.NO_PROXY;
+ } else {
+ sProxyInfoLock.readLock().lock();
+ retval = retProxy;
}
- sProxyInfoLock.readLock().lock();
- return retProxy;
} else {
- return java.net.Proxy.NO_PROXY;
+ retval = java.net.Proxy.NO_PROXY;
}
}
} finally {
sProxyInfoLock.readLock().unlock();
}
+ return retval;
}
// TODO: deprecate this function
@@ -233,7 +240,7 @@ public final class Proxy {
*/
public static final String getDefaultHost() {
String host = SystemProperties.get("net.gprs.http-proxy");
- if (host != null) {
+ if ((host != null) && (host.length() != 0)) {
Uri u = Uri.parse(host);
host = u.getHost();
return host;
@@ -250,7 +257,7 @@ public final class Proxy {
*/
public static final int getDefaultPort() {
String host = SystemProperties.get("net.gprs.http-proxy");
- if (host != null) {
+ if ((host != null) && (host.length() != 0)) {
Uri u = Uri.parse(host);
return u.getPort();
} else {
@@ -262,7 +269,7 @@ public final class Proxy {
// TODO: This will go away when information is collected from ConnectivityManager...
// There are broadcast of network proxies, so they are parse manually.
String host = SystemProperties.get("net.gprs.http-proxy");
- if (host != null) {
+ if ((host != null) && (host.length() != 0)) {
Uri u = Uri.parse(host);
return new java.net.Proxy(java.net.Proxy.Type.HTTP,
new InetSocketAddress(u.getHost(), u.getPort()));
@@ -376,7 +383,13 @@ public final class Proxy {
String proxyHost = Settings.Secure.getString(
contentResolver,
Settings.Secure.HTTP_PROXY);
- if (proxyHost == null) {
+ if ((proxyHost == null) || (proxyHost.length() == 0)) {
+ // Clear signal
+ sProxyInfoLock.readLock().unlock();
+ sProxyInfoLock.writeLock().lock();
+ sGlobalProxySpec = null;
+ sProxyInfoLock.readLock().lock();
+ sProxyInfoLock.writeLock().unlock();
return;
}
String exclusionListSpec = Settings.Secure.getString(
@@ -387,7 +400,7 @@ public final class Proxy {
if (proxyHost != null) {
sGlobalProxySpec = new ProxySpec();
sGlobalProxySpec.proxyAddress = new InetSocketAddress(host, port);
- if (exclusionListSpec != null) {
+ if ((exclusionListSpec != null) && (exclusionListSpec.length() != 0)) {
String[] exclusionListEntries = exclusionListSpec.toLowerCase().split(",");
String[] processedEntries = new String[exclusionListEntries.length];
for (int i = 0; i < exclusionListEntries.length; i++) {