X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Ftools%2Fsysdbd%2Fmain.c;h=cc3525e30ef4374e3c904797cccd176de2e94043;hb=e04534362b8993b5400e0859aae9a38cfcc08aa6;hp=b8e97a3c3780ec1c01cee7fc88dcd9d28bc41f2d;hpb=e512851481132ca3f18ed3e2c8ea8802b915cd52;p=sysdb.git diff --git a/src/tools/sysdbd/main.c b/src/tools/sysdbd/main.c index b8e97a3..cc3525e 100644 --- a/src/tools/sysdbd/main.c +++ b/src/tools/sysdbd/main.c @@ -33,6 +33,7 @@ #include "core/plugin.h" #include "core/store.h" #include "utils/error.h" +#include "utils/ssl.h" #include "frontend/connection.h" #include "frontend/sock.h" @@ -74,8 +75,8 @@ static sdb_fe_loop_t frontend_main_loop = SDB_FE_LOOP_INIT; static char *config_filename = NULL; static int reconfigure = 0; -static char *default_listen_addresses[] = { - DEFAULT_SOCKET, +static daemon_listener_t default_listen_addresses[] = { + { DEFAULT_SOCKET, SDB_SSL_DEFAULT_OPTIONS }, }; static void @@ -236,7 +237,7 @@ main_loop(void) int status = 0; - while (42) { + while (status == 0) { size_t i; plugin_main_loop.do_loop = 1; @@ -254,17 +255,16 @@ main_loop(void) } for (i = 0; i < listen_addresses_num; ++i) { - if (sdb_fe_sock_add_listener(sock, listen_addresses[i])) { + if (sdb_fe_sock_add_listener(sock, listen_addresses[i].address, + &listen_addresses[i].ssl_opts)) { status = 1; break; } } /* break on error */ - if (i < listen_addresses_num) { - status = 1; + if (status) break; - } sdb_log(SDB_LOG_INFO, "SysDB daemon "SDB_VERSION_STRING SDB_VERSION_EXTRA " (libsysdb %s%s, pid %i) initialized " @@ -294,6 +294,8 @@ main_loop(void) } /* clean up in case we exited the loop on error */ + plugin_main_loop.do_loop = 0; + frontend_main_loop.do_loop = 0; pthread_kill(backend_thread, SIGINT); pthread_join(backend_thread, NULL); @@ -304,7 +306,7 @@ main_loop(void) int main(int argc, char **argv) { - _Bool do_daemonize = 1; + bool do_daemonize = 1; struct sigaction sa_intterm; struct sigaction sa_hup; @@ -366,6 +368,10 @@ main(int argc, char **argv) if (daemonize()) exit(1); + if (sdb_ssl_init()) + exit(1); + if (sdb_store_init()) + exit(1); sdb_plugin_init_all(); plugin_main_loop.default_interval = SECS_TO_SDB_TIME(60); @@ -389,6 +395,8 @@ main(int argc, char **argv) sdb_log(SDB_LOG_INFO, "Shutting down SysDB daemon "SDB_VERSION_STRING SDB_VERSION_EXTRA" (pid %i)", (int)getpid()); sdb_plugin_shutdown_all(); + sdb_plugin_unregister_all(); + sdb_ssl_shutdown(); return status; } /* main */