Snap for 11397440 from 16fbf4c447db797ebf4f9d6654b65dfc17275c01 to mainline-ipsec-release

Change-Id: I1a58bf24fd3439dd566bc35aebd2151146ff5072
diff --git a/src/android/otdaemon_server.cpp b/src/android/otdaemon_server.cpp
index 1af673a..4e695be 100644
--- a/src/android/otdaemon_server.cpp
+++ b/src/android/otdaemon_server.cpp
@@ -318,9 +318,18 @@
 
 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 @@
 void OtDaemonServer::updateThreadEnabledState(const int enabled, const std::shared_ptr<IOtStatusReceiver> &aReceiver)
 {
     mThreadEnabled = enabled;
-    aReceiver->onSuccess();
+    if (aReceiver != nullptr)
+    {
+        aReceiver->onSuccess();
+    }
 
     if (mCallback != nullptr)
     {