From 6ff743e424c58712a62b7bd7b7cabaae5dd4c85c Mon Sep 17 00:00:00 2001 From: Geoffrey Borggaard Date: Thu, 20 Nov 2014 14:35:32 -0500 Subject: [PATCH] Fix null handling in proxies. ProxyInfo.getPacFileUrl() can not be null. It will be equal to Uri.EMPTY. Checking for null was causing global proxies to never be disabled. Or more accurately, global proxies would be disabled, but would reappear after a reboot. ProxyInfo.getExclusionListByString() can be null. If no exclusion list was specified, the proxy settings would not be successfully saved, they would disappear after reboot. Bug: 18453223 Change-Id: I1c27e5dca5b9664bb7468ea909bff489fa110a07 --- .../java/com/android/server/ConnectivityService.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 6a6dcaf39d..b4a248fbec 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -2532,7 +2532,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { String exclList = ""; String pacFileUrl = ""; if (proxyProperties != null && (!TextUtils.isEmpty(proxyProperties.getHost()) || - (proxyProperties.getPacFileUrl() != null))) { + !Uri.EMPTY.equals(proxyProperties.getPacFileUrl()))) { if (!proxyProperties.isValid()) { if (DBG) log("Invalid proxy properties, ignoring: " + proxyProperties.toString()); @@ -2542,7 +2542,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { host = mGlobalProxy.getHost(); port = mGlobalProxy.getPort(); exclList = mGlobalProxy.getExclusionListAsString(); - if (proxyProperties.getPacFileUrl() != null) { + if (!Uri.EMPTY.equals(proxyProperties.getPacFileUrl())) { pacFileUrl = proxyProperties.getPacFileUrl().toString(); } } else { @@ -2604,7 +2604,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { private void handleApplyDefaultProxy(ProxyInfo proxy) { if (proxy != null && TextUtils.isEmpty(proxy.getHost()) - && (proxy.getPacFileUrl() == null)) { + && Uri.EMPTY.equals(proxy.getPacFileUrl())) { proxy = null; } synchronized (mProxyLock) { @@ -2620,7 +2620,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { // global (to get the correct local port), and send a broadcast. // TODO: Switch PacManager to have its own message to send back rather than // reusing EVENT_HAS_CHANGED_PROXY and this call to handleApplyDefaultProxy. - if ((mGlobalProxy != null) && (proxy != null) && (proxy.getPacFileUrl() != null) + if ((mGlobalProxy != null) && (proxy != null) + && (!Uri.EMPTY.equals(proxy.getPacFileUrl())) && proxy.getPacFileUrl().equals(mGlobalProxy.getPacFileUrl())) { mGlobalProxy = proxy; sendProxyBroadcast(mGlobalProxy);