Fix serious bug that causes crash on CKM exit.
[platform/core/security/key-manager.git] / src / manager / main / key-manager-main.cpp
index 86f1fb7..71c76e7 100644 (file)
@@ -29,7 +29,6 @@
 
 #include <dpl/log/log.h>
 #include <dpl/singleton.h>
-#include <dpl/singleton_safe_impl.h>
 
 #include <socket-manager.h>
 
@@ -37,9 +36,7 @@
 #include <ocsp-service.h>
 
 #include <key-provider.h>
-#include <CryptoService.h>
-
-IMPLEMENT_SAFE_SINGLETON(CKM::Log::LogSystem);
+#include <file-system.h>
 
 #define REGISTER_SOCKET_SERVICE(manager, service) \
     registerSocketService<service>(manager, #service)
@@ -50,7 +47,7 @@ void registerSocketService(CKM::SocketManager &manager, const std::string& servi
     T *service = NULL;
     try {
         service = new T();
-        service->Create();
+        service->Start();
         manager.RegisterSocketService(service);
         service = NULL;
     } catch (const CKM::Exception &exception) {
@@ -68,15 +65,18 @@ void registerSocketService(CKM::SocketManager &manager, const std::string& servi
 }
 
 int main(void) {
-
-    int ret;
-    ret = system("/usr/bin/key-manager-listener");
-    LogInfo("system return val : " << ret);
-
     UNHANDLED_EXCEPTION_HANDLER_BEGIN
     {
         CKM::Singleton<CKM::Log::LogSystem>::Instance().SetTag("CKM");
 
+        int retCode = CKM::FileSystem::init();
+        if (retCode) {
+            LogError("Fatal error in FileSystem::init()");
+            return 1;
+        }
+
+        CKM::FileLock fl = CKM::FileSystem::lock();
+
         sigset_t mask;
         sigemptyset(&mask);
         sigaddset(&mask, SIGTERM);
@@ -85,7 +85,7 @@ int main(void) {
             LogError("Error in pthread_sigmask");
             return 1;
         }
-        LogInfo("Init external liblaries SKMM and openssl");
+        LogInfo("Init external libraries SKMM and openssl");
 
         SSL_load_error_strings();
         SSL_library_init();
@@ -93,7 +93,6 @@ int main(void) {
         OPENSSL_config(NULL);
 
         CKM::KeyProvider::initializeLibrary();
-        CKM::CryptoService::initialize();
 
         {
             LogInfo("Start!");
@@ -111,6 +110,10 @@ int main(void) {
         EVP_cleanup();
         ERR_free_strings();
     }
+    catch (const std::runtime_error& e)
+    {
+        LogError(e.what());
+    }
     UNHANDLED_EXCEPTION_HANDLER_END
     return 0;
 }