aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/android/otdaemon_server.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/android/otdaemon_server.cpp b/src/android/otdaemon_server.cpp
index 1af673a8..4e695be9 100644
--- a/src/android/otdaemon_server.cpp
+++ b/src/android/otdaemon_server.cpp
@@ -318,9 +318,18 @@ void OtDaemonServer::Process(const MainloopContext &aMainloop)
Status OtDaemonServer::initialize(const ScopedFileDescriptor &aTunFd, const bool enabled)
{
- otbrLogDebug("OT daemon is initialized by the binder client (tunFd=%d)", aTunFd.get());
- mTunFd = aTunFd.dup();
- mThreadEnabled = enabled ? IOtDaemon::OT_STATE_ENABLED : IOtDaemon::OT_STATE_DISABLED;
+ otbrLogInfo("OT daemon is initialized by system server (tunFd=%d, enabled=%s)",
+ aTunFd.get(), enabled ? "true" : "false");
+ mTunFd = aTunFd.dup();
+
+ if (enabled)
+ {
+ enableThread(nullptr /* aReceiver */);
+ }
+ else
+ {
+ updateThreadEnabledState(enabled, nullptr /* Receiver */);
+ }
return Status::ok();
}
@@ -328,7 +337,10 @@ Status OtDaemonServer::initialize(const ScopedFileDescriptor &aTunFd, const bool
void OtDaemonServer::updateThreadEnabledState(const int enabled, const std::shared_ptr<IOtStatusReceiver> &aReceiver)
{
mThreadEnabled = enabled;
- aReceiver->onSuccess();
+ if (aReceiver != nullptr)
+ {
+ aReceiver->onSuccess();
+ }
if (mCallback != nullptr)
{