diff options
| author | 2016-05-09 01:32:15 +0000 | |
|---|---|---|
| committer | 2016-05-09 01:32:17 +0000 | |
| commit | d521a6d1467a41ba20744f63dd70a40be0f35be0 (patch) | |
| tree | d270781846a3d23ebda9c83a45b7480302c53c5d | |
| parent | dce92891df42d5ad8cdcb6ecade5b2801a14f090 (diff) | |
| parent | 07cc3bb04081b8ad836f16abb7644a626fc47bae (diff) | |
Merge "Ensure Netd Service is alive" into nyc-dev
| -rw-r--r-- | services/core/java/com/android/server/NetworkManagementService.java | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java index 2418160255f8..e5b301e803af 100644 --- a/services/core/java/com/android/server/NetworkManagementService.java +++ b/services/core/java/com/android/server/NetworkManagementService.java @@ -330,6 +330,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub if (DBG) Slog.d(TAG, "Awaiting socket connection"); connectedSignal.await(); if (DBG) Slog.d(TAG, "Connected"); + service.connectNativeNetdService(); return service; } @@ -560,11 +561,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub } } - /** - * Prepare native daemon once connected, enabling modules and pushing any - * existing in-memory rules. - */ - private void prepareNativeDaemon() { + private void connectNativeNetdService() { boolean nativeServiceAvailable = false; try { mNetdService = INetd.Stub.asInterface(ServiceManager.getService(NETD_SERVICE_NAME)); @@ -573,6 +570,13 @@ public class NetworkManagementService extends INetworkManagementService.Stub if (!nativeServiceAvailable) { Slog.wtf(TAG, "Can't connect to NativeNetdService " + NETD_SERVICE_NAME); } + } + + /** + * Prepare native daemon once connected, enabling modules and pushing any + * existing in-memory rules. + */ + private void prepareNativeDaemon() { mBandwidthControlEnabled = false; @@ -767,12 +771,16 @@ public class NetworkManagementService extends INetworkManagementService.Stub // event is dispatched from internal NDC thread, so we prepare the // daemon back on main thread. if (mConnectedSignal != null) { + // The system is booting and we're connecting to netd for the first time. mConnectedSignal.countDown(); mConnectedSignal = null; } else { + // We're reconnecting to netd after the socket connection + // was interrupted (e.g., if it crashed). mFgHandler.post(new Runnable() { @Override public void run() { + connectNativeNetdService(); prepareNativeDaemon(); } }); |