diff options
| -rw-r--r-- | services/core/java/com/android/server/ConnectivityService.java | 33 | 
1 files changed, 16 insertions, 17 deletions
| diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 8a0d9fe93d1c..60bbca833925 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -2099,12 +2099,14 @@ public class ConnectivityService extends IConnectivityManager.Stub          return new MockableSystemProperties();      } -    private void updateTcpBufferSizes(NetworkAgentInfo nai) { +    // TODO: Replace nai and newLp with TcpBufferSizes and check default network before calling +    // this method. +    private void updateTcpBufferSizes(NetworkAgentInfo nai, LinkProperties newLp) {          if (isDefaultNetwork(nai) == false) {              return;          } -        String tcpBufferSizes = nai.linkProperties.getTcpBufferSizes(); +        String tcpBufferSizes = newLp.getTcpBufferSizes();          String[] values = null;          if (tcpBufferSizes != null) {              values = tcpBufferSizes.split(","); @@ -4780,8 +4782,8 @@ public class ConnectivityService extends IConnectivityManager.Stub          updateUids(nai, null, nai.networkCapabilities);      } -    private void updateLinkProperties(NetworkAgentInfo networkAgent, LinkProperties oldLp) { -        LinkProperties newLp = new LinkProperties(networkAgent.linkProperties); +    private void updateLinkProperties(NetworkAgentInfo networkAgent, LinkProperties newLp, +            LinkProperties oldLp) {          int netId = networkAgent.network.netId;          // The NetworkAgentInfo does not know whether clatd is running on its network or not. Before @@ -4796,7 +4798,7 @@ public class ConnectivityService extends IConnectivityManager.Stub  //        for (LinkProperties lp : newLp.getStackedLinks()) {  //            updateMtu(lp, null);  //        } -        updateTcpBufferSizes(networkAgent); +        updateTcpBufferSizes(networkAgent, newLp);          updateRoutes(newLp, oldLp, netId);          updateDnses(newLp, oldLp, netId); @@ -4806,8 +4808,6 @@ public class ConnectivityService extends IConnectivityManager.Stub          // updateDnses will fetch the private DNS configuration from DnsManager.          mDnsManager.updatePrivateDnsStatus(netId, newLp); -        // Start or stop clat accordingly to network state. -        networkAgent.updateClat(mNMS);          if (isDefaultNetwork(networkAgent)) {              handleApplyDefaultProxy(newLp.getHttpProxy());          } else { @@ -4818,8 +4818,12 @@ public class ConnectivityService extends IConnectivityManager.Stub              synchronized (networkAgent) {                  networkAgent.linkProperties = newLp;              } +            // Start or stop clat accordingly to network state. +            networkAgent.updateClat(mNMS);              notifyIfacesChangedForNetworkStats(); -            notifyNetworkCallbacks(networkAgent, ConnectivityManager.CALLBACK_IP_CHANGED); +            if (networkAgent.everConnected) { +                notifyNetworkCallbacks(networkAgent, ConnectivityManager.CALLBACK_IP_CHANGED); +            }          }          mKeepaliveTracker.handleCheckKeepalivesStillValid(networkAgent); @@ -5124,13 +5128,7 @@ public class ConnectivityService extends IConnectivityManager.Stub                      "; created=" + nai.created +                      "; everConnected=" + nai.everConnected);          } -        LinkProperties oldLp = nai.linkProperties; -        synchronized (nai) { -            nai.linkProperties = newLp; -        } -        if (nai.everConnected) { -            updateLinkProperties(nai, oldLp); -        } +        updateLinkProperties(nai, newLp, new LinkProperties(nai.linkProperties));      }      private void sendUpdatedScoreToFactories(NetworkAgentInfo nai) { @@ -5291,7 +5289,7 @@ public class ConnectivityService extends IConnectivityManager.Stub          notifyLockdownVpn(newNetwork);          handleApplyDefaultProxy(newNetwork.linkProperties.getHttpProxy()); -        updateTcpBufferSizes(newNetwork); +        updateTcpBufferSizes(newNetwork, new LinkProperties(newNetwork.linkProperties));          mDnsManager.setDefaultDnsSystemProperties(newNetwork.linkProperties.getDnsServers());          notifyIfacesChangedForNetworkStats();      } @@ -5706,7 +5704,8 @@ public class ConnectivityService extends IConnectivityManager.Stub              }              handlePerNetworkPrivateDnsConfig(networkAgent, mDnsManager.getPrivateDnsConfig()); -            updateLinkProperties(networkAgent, null); +            updateLinkProperties(networkAgent, new LinkProperties(networkAgent.linkProperties), +                    null);              networkAgent.networkMonitor.sendMessage(NetworkMonitor.CMD_NETWORK_CONNECTED);              scheduleUnvalidatedPrompt(networkAgent); |