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
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 6ef1c14..c9f9ab6 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -4731,11 +4731,12 @@
} 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 2208580..c2c627d 100644
--- a/tests/net/java/com/android/server/ConnectivityServiceTest.java
+++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java
@@ -4024,6 +4024,14 @@
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