Code

frontend: Added module for generic connection handling.
[sysdb.git] / src / daemon / sysdbd.c
index 6e75c039bb21f1f5761df3f1e363b13b8f7136fe..e2309224d57243bd9dd7d7bc19f7fde1841c8ed9 100644 (file)
@@ -77,7 +77,6 @@ static char *default_listen_addresses[] = {
 static void
 sigintterm_handler(int __attribute__((unused)) signo)
 {
-       plugin_main_loop.do_loop = 0;
        frontend_main_loop.do_loop = 0;
 } /* sigintterm_handler */
 
@@ -273,10 +272,17 @@ main(int argc, char **argv)
 
                sdb_fe_socket_t *sock = sdb_fe_sock_create();
                for (i = 0; i < listen_addresses_num; ++i)
-                       sdb_fe_sock_add_listener(sock, listen_addresses[i]);
-               sdb_fe_sock_listen_and_serve(sock, &frontend_main_loop);
+                       if (sdb_fe_sock_add_listener(sock, listen_addresses[i]))
+                               break;
+
+               /* break on error */
+               if (i >= listen_addresses_num)
+                       sdb_fe_sock_listen_and_serve(sock, &frontend_main_loop);
 
+               sdb_log(SDB_LOG_INFO, "Waiting for backend thread to terminate");
+               plugin_main_loop.do_loop = 0;
                pthread_join(backend_thread, NULL);
+               sdb_fe_sock_destroy(sock);
        }
 
        sdb_log(SDB_LOG_INFO, "Shutting down SysDB daemon "SDB_VERSION_STRING