Fixes for stupid mistakes (by me).
+ Only remove netId/permission after doing everything that references them.
+ Return success/failure correctly based on return value of fork/exec.
Conflicts:
NetworkController.cpp
Change-Id: Iddb8ccdffc104ffed1058ecc2421006beebd568d
diff --git a/NetworkController.cpp b/NetworkController.cpp
index 395798d..93e1c1b 100644
--- a/NetworkController.cpp
+++ b/NetworkController.cpp
@@ -183,8 +183,6 @@
status = false;
}
}
- mPermissionsController->setPermissionForNetwork(PERMISSION_NONE, netId);
- mNetIdToInterfaces.erase(netId);
if (netId == getDefaultNetwork()) {
// Could the default network have changed from below us, after we evaluated the 'if', making
@@ -194,6 +192,9 @@
setDefaultNetwork(NETID_UNSET);
}
+ mPermissionsController->setPermissionForNetwork(PERMISSION_NONE, netId);
+ mNetIdToInterfaces.erase(netId);
+
// TODO: Uncomment once this API has been added to bionic.
#if 0
_resolv_delete_cache_for_net(netId);