diff options
-rw-r--r-- | src/android/otdaemon_server.cpp | 20 |
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) { |