OSDN Git Service

Ignore link properties updates when nothing actually changed.
authorErik Kline <ek@google.com>
Wed, 3 Feb 2016 10:39:01 +0000 (19:39 +0900)
committerErik Kline <ek@google.com>
Wed, 3 Feb 2016 13:42:54 +0000 (22:42 +0900)
Change-Id: Ia3c0a652cb3b67707a5c5a0bb40f991ef1e6f777

services/net/java/android/net/ip/IpManager.java

index 5c6d84e..06b6ee7 100644 (file)
@@ -43,6 +43,7 @@ import com.android.server.net.NetlinkTracker;
 import java.net.InetAddress;
 import java.net.NetworkInterface;
 import java.net.SocketException;
+import java.util.Objects;
 
 
 /**
@@ -284,6 +285,12 @@ public class IpManager extends StateMachine {
         return delta;
     }
 
+    private boolean linkPropertiesUnchanged(LinkProperties newLp) {
+        synchronized (mLock) {
+            return Objects.equals(newLp, mLinkProperties);
+        }
+    }
+
     private LinkProperties assembleLinkProperties() {
         // [1] Create a new LinkProperties object to populate.
         LinkProperties newLp = new LinkProperties();
@@ -489,6 +496,9 @@ public class IpManager extends StateMachine {
 
                 case EVENT_NETLINK_LINKPROPERTIES_CHANGED: {
                     final LinkProperties newLp = assembleLinkProperties();
+                    if (linkPropertiesUnchanged(newLp)) {
+                        break;
+                    }
                     final ProvisioningChange delta = setLinkProperties(newLp);
 
                     // NOTE: The only receiver of these callbacks currently