Avoid re-creating an IpClient if the network has already started
am: de93b3eb05

Change-Id: Id4f8fa2fa3c4c929cdc777125f6e85dce9187bff
diff --git a/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java b/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java
index 29464b7..d464879 100644
--- a/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java
+++ b/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java
@@ -280,11 +280,14 @@
         }
 
         private void start() {
+            if (mIpClient != null) {
+                if (DBG) Log.d(TAG, "IpClient already started");
+                return;
+            }
             if (DBG) {
                 Log.d(TAG, String.format("starting IpClient(%s): mNetworkInfo=%s", name,
                         mNetworkInfo));
             }
-            if (mIpClient != null) stop();
 
             mNetworkInfo.setDetailedState(DetailedState.OBTAINING_IPADDR, null, mHwAddress);
 
@@ -325,6 +328,7 @@
         void onIpLayerStopped(LinkProperties linkProperties) {
             // This cannot happen due to provisioning timeout, because our timeout is 0. It can only
             // happen if we're provisioned and we lose provisioning.
+            stop();
             start();
         }
 
@@ -338,12 +342,11 @@
         /** Returns true if state has been modified */
         boolean updateLinkState(boolean up) {
             if (mLinkUp == up) return false;
-
             mLinkUp = up;
+
+            stop();
             if (up) {
                 start();
-            } else {
-                stop();
             }
 
             return true;