Terminate service if it cannot setup its sockets 57/34457/2
authorRafal Krypa <r.krypa@samsung.com>
Tue, 27 Jan 2015 11:06:44 +0000 (12:06 +0100)
committerRafal Krypa <r.krypa@samsung.com>
Mon, 2 Feb 2015 10:04:28 +0000 (02:04 -0800)
Currently even if the server cannot listen on a socket it will continue
running. There is no point in that, when no client will be able to connect.

Change-Id: I74ad5a9fddee1072f7642c036a088805f53caa11
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
src/server/main/server-main.cpp

index 5c34d3f..c9609e2 100644 (file)
@@ -39,14 +39,14 @@ IMPLEMENT_SAFE_SINGLETON(SecurityManager::Log::LogSystem);
     registerSocketService<service>(manager, #service)
 
 template<typename T>
-void registerSocketService(SecurityManager::SocketManager &manager, const std::string& serviceName)
+bool registerSocketService(SecurityManager::SocketManager &manager, const std::string& serviceName)
 {
     T *service = NULL;
     try {
         service = new T();
         service->Create();
         manager.RegisterSocketService(service);
-        service = NULL;
+        return true;
     } catch (const SecurityManager::Exception &exception) {
         LogError("Error in creating service " << serviceName <<
                  ", details:\n" << exception.DumpToString());
@@ -59,6 +59,7 @@ void registerSocketService(SecurityManager::SocketManager &manager, const std::s
     }
     if (service)
         delete service;
+    return false;
 }
 
 int main(void) {
@@ -82,7 +83,10 @@ int main(void) {
         LogInfo("Start!");
         SecurityManager::SocketManager manager;
 
-        REGISTER_SOCKET_SERVICE(manager, SecurityManager::Service);
+        if (!REGISTER_SOCKET_SERVICE(manager, SecurityManager::Service)) {
+            LogError("Unable to create socket service. Exiting.");
+            return EXIT_FAILURE;
+        }
 
         manager.MainLoop();
     } catch (const SecurityManager::FileLocker::Exception::Base &e) {