From 20f6d0a3b93fa19eb6c84e5f11520a79a33f4479 Mon Sep 17 00:00:00 2001 From: markchien Date: Mon, 10 Dec 2018 20:53:47 +0800 Subject: [PATCH] DO NOT MERGE fix some linkproperties configs missing In handleUpdateLinkProperties(), it will always assign newLp to nai first. Then, the copied newLp would add some configurations ex: private dns/clatd. This updated newLp wouldn't be assigned back to nai when linkproperties is not changed. Bug: 113637648 Test: - build, flash, booted - atest FrameworksNetTests - run CtsNetTestCases Change-Id: I9e25e46718e076d4afa784ee5e1d3abbe0f11911 --- .../core/java/com/android/server/ConnectivityService.java | 7 ++++--- .../java/com/android/server/ConnectivityServiceTest.java | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 6ef1c1421b..c9f9ab675a 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -4731,11 +4731,12 @@ public class ConnectivityService extends IConnectivityManager.Stub } else { updateProxy(newLp, oldLp, networkAgent); } + + synchronized (networkAgent) { + networkAgent.linkProperties = newLp; + } // TODO - move this check to cover the whole function if (!Objects.equals(newLp, oldLp)) { - synchronized (networkAgent) { - networkAgent.linkProperties = newLp; - } notifyIfacesChangedForNetworkStats(); notifyNetworkCallbacks(networkAgent, ConnectivityManager.CALLBACK_IP_CHANGED); } diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java index 220858081e..c2c627d06e 100644 --- a/tests/net/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java @@ -4024,6 +4024,14 @@ public class ConnectivityServiceTest { cellNetworkCallback.assertNoCallback(); assertTrue(((LinkProperties)cbi.arg).isPrivateDnsActive()); assertEquals("strict.example.com", ((LinkProperties)cbi.arg).getPrivateDnsServerName()); + + // Send the same LinkProperties and expect getting the same result including private dns. + // b/118518971 + LinkProperties oldLp = (LinkProperties) cbi.arg; + mCellNetworkAgent.sendLinkProperties(cellLp); + waitForIdle(); + LinkProperties newLp = mCm.getLinkProperties(cbi.network); + assertEquals(oldLp, newLp); } @Test