diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 090c7444c1..8c1f198252 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -1813,14 +1813,11 @@ public class ConnectivityService extends IConnectivityManager.Stub private void updateMtu(LinkProperties newLp, LinkProperties oldLp) { final String iface = newLp.getInterfaceName(); final int mtu = newLp.getMtu(); - if (oldLp == null && mtu == 0) { - // Silently ignore unset MTU value. - return; - } if (oldLp != null && newLp.isIdenticalMtu(oldLp)) { if (VDBG) log("identical MTU - not setting"); return; } + if (LinkProperties.isValidMtu(mtu, newLp.hasGlobalIPv6Address()) == false) { if (mtu != 0) loge("Unexpected mtu value: " + mtu + ", " + iface); return; @@ -2266,19 +2263,11 @@ public class ConnectivityService extends IConnectivityManager.Stub synchronized (mNetworkForNetId) { nai = mNetworkForNetId.get(netId); } - // If captive portal status has changed, update capabilities or disconnect. + // If captive portal status has changed, update capabilities. if (nai != null && (visible != nai.lastCaptivePortalDetected)) { final int oldScore = nai.getCurrentScore(); nai.lastCaptivePortalDetected = visible; nai.everCaptivePortalDetected |= visible; - if (nai.lastCaptivePortalDetected && - Settings.Global.CAPTIVE_PORTAL_MODE_AVOID == getCaptivePortalMode()) { - if (DBG) log("Avoiding captive portal network: " + nai.name()); - nai.asyncChannel.sendMessage( - NetworkAgent.CMD_PREVENT_AUTOMATIC_RECONNECT); - teardownUnneededNetwork(nai); - break; - } updateCapabilities(oldScore, nai, nai.networkCapabilities); } if (!visible) { @@ -2299,12 +2288,6 @@ public class ConnectivityService extends IConnectivityManager.Stub return true; } - private int getCaptivePortalMode() { - return Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.CAPTIVE_PORTAL_MODE, - Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT); - } - private boolean maybeHandleNetworkAgentInfoMessage(Message msg) { switch (msg.what) { default: @@ -2614,28 +2597,14 @@ public class ConnectivityService extends IConnectivityManager.Stub "request NetworkCapabilities", ConnectivityManager.CALLBACK_CAP_CHANGED); } - private void handleTimedOutNetworkRequest(final NetworkRequestInfo nri) { - if (mNetworkRequests.get(nri.request) != null && mNetworkForRequestId.get( - nri.request.requestId) == null) { - handleRemoveNetworkRequest(nri, ConnectivityManager.CALLBACK_UNAVAIL); - } - } - private void handleReleaseNetworkRequest(NetworkRequest request, int callingUid) { final NetworkRequestInfo nri = getNriForAppRequest( request, callingUid, "release NetworkRequest"); - if (nri != null) { - handleRemoveNetworkRequest(nri, ConnectivityManager.CALLBACK_RELEASED); - } - } + if (nri == null) return; - private void handleRemoveNetworkRequest(final NetworkRequestInfo nri, final int whichCallback) { - final String logCallbackType = ConnectivityManager.getCallbackName(whichCallback); - if (VDBG || (DBG && nri.request.isRequest())) { - log("releasing " + nri.request + " (" + logCallbackType + ")"); - } + if (VDBG || (DBG && nri.request.isRequest())) log("releasing " + request); nri.unlinkDeathRecipient(); - mNetworkRequests.remove(nri.request); + mNetworkRequests.remove(request); synchronized (mUidToNetworkRequestCount) { int requests = mUidToNetworkRequestCount.get(nri.mUid, 0); if (requests < 1) { @@ -2729,7 +2698,7 @@ public class ConnectivityService extends IConnectivityManager.Stub } } } - callCallbackForRequest(nri, null, whichCallback, 0); + callCallbackForRequest(nri, null, ConnectivityManager.CALLBACK_RELEASED, 0); } @Override @@ -2966,11 +2935,6 @@ public class ConnectivityService extends IConnectivityManager.Stub handleRegisterNetworkRequestWithIntent(msg); break; } - case EVENT_TIMEOUT_NETWORK_REQUEST: { - NetworkRequestInfo nri = (NetworkRequestInfo) msg.obj; - handleTimedOutNetworkRequest(nri); - break; - } case EVENT_RELEASE_NETWORK_REQUEST_WITH_INTENT: { handleReleaseNetworkRequestWithIntent((PendingIntent) msg.obj, msg.arg1); break; @@ -4615,28 +4579,9 @@ public class ConnectivityService extends IConnectivityManager.Stub } catch (Exception e) { loge("Exception in setDnsConfigurationForNetwork: " + e); } - final NetworkAgentInfo defaultNai = getDefaultNetwork(); - if (defaultNai != null && defaultNai.network.netId == netId) { - setDefaultDnsSystemProperties(dnses); - } flushVmDnsCache(); } - private void setDefaultDnsSystemProperties(Collection dnses) { - int last = 0; - for (InetAddress dns : dnses) { - ++last; - String key = "net.dns" + last; - String value = dns.getHostAddress(); - SystemProperties.set(key, value); - } - for (int i = last + 1; i <= mNumDnsEntries; ++i) { - String key = "net.dns" + i; - SystemProperties.set(key, ""); - } - mNumDnsEntries = last; - } - private String getNetworkPermission(NetworkCapabilities nc) { // TODO: make these permission strings AIDL constants instead. if (!nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)) { @@ -4853,7 +4798,6 @@ public class ConnectivityService extends IConnectivityManager.Stub notifyLockdownVpn(newNetwork); handleApplyDefaultProxy(newNetwork.linkProperties.getHttpProxy()); updateTcpBufferSizes(newNetwork); - setDefaultDnsSystemProperties(newNetwork.linkProperties.getDnsServers()); } private void processListenRequests(NetworkAgentInfo nai, boolean capabilitiesChanged) { @@ -5351,7 +5295,6 @@ public class ConnectivityService extends IConnectivityManager.Stub // notify only this one new request of the current state protected void notifyNetworkCallback(NetworkAgentInfo nai, NetworkRequestInfo nri) { int notifyType = ConnectivityManager.CALLBACK_AVAILABLE; - mHandler.removeMessages(EVENT_TIMEOUT_NETWORK_REQUEST, nri); if (nri.mPendingIntent == null) { callCallbackForRequest(nri, nai, notifyType, 0); } else {