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