Request Thread network at the initialize()

Currently requestThreadNetwork is called in registerThreadNetwork. This creates a new NetworkCallback for Thread every time when Thread is turned on. We'd better just use one callback to avoid potential issues.

Bug: 319179354

Change-Id: I96bad351f089b32a9acd919dea2e2b6b2aea68d2
This commit is contained in:
Handa Wang 2024-01-09 11:09:16 +08:00
commit 90d2d0d0d9

View file

@ -333,6 +333,7 @@ final class ThreadNetworkControllerService extends IThreadNetworkController.Stub
mLinkProperties.setMtu(TunInterfaceController.MTU);
mConnectivityManager.registerNetworkProvider(mNetworkProvider);
requestUpstreamNetwork();
requestThreadNetwork();
initializeOtDaemon();
});
@ -413,9 +414,10 @@ final class ThreadNetworkControllerService extends IThreadNetworkController.Stub
private void requestThreadNetwork() {
mConnectivityManager.registerNetworkCallback(
new NetworkRequest.Builder()
// clearCapabilities() is needed to remove forbidden capabilities and UID
// requirement.
.clearCapabilities()
.addTransportType(NetworkCapabilities.TRANSPORT_THREAD)
.removeForbiddenCapability(NetworkCapabilities.NET_CAPABILITY_LOCAL_NETWORK)
.build(),
new ThreadNetworkCallback(),
mHandler);
@ -459,8 +461,6 @@ final class ThreadNetworkControllerService extends IThreadNetworkController.Stub
return;
}
requestThreadNetwork();
mNetworkAgent = newNetworkAgent();
mNetworkAgent.register();
mNetworkAgent.markConnected();