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;