diff --git a/src/daemon/sysdbd.c b/src/daemon/sysdbd.c
index 6e75c039bb21f1f5761df3f1e363b13b8f7136fe..e2309224d57243bd9dd7d7bc19f7fde1841c8ed9 100644 (file)
--- a/src/daemon/sysdbd.c
+++ b/src/daemon/sysdbd.c
static void
sigintterm_handler(int __attribute__((unused)) signo)
{
- plugin_main_loop.do_loop = 0;
frontend_main_loop.do_loop = 0;
} /* sigintterm_handler */
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