diff options
author | louiz’ <louiz@louiz.org> | 2016-07-12 00:31:57 +0200 |
---|---|---|
committer | louiz’ <louiz@louiz.org> | 2016-07-12 00:31:57 +0200 |
commit | 4c1b9abe7e230a39b119bdc45ebcd5e677fad488 (patch) | |
tree | 52ef96df3fb94412787a3fac099d53199540b8f4 /src/main.cpp | |
parent | 03feb403f8fc702481f4e7a0ec0264aa2912ae51 (diff) | |
download | biboumi-4c1b9abe7e230a39b119bdc45ebcd5e677fad488.tar.gz biboumi-4c1b9abe7e230a39b119bdc45ebcd5e677fad488.tar.bz2 biboumi-4c1b9abe7e230a39b119bdc45ebcd5e677fad488.tar.xz biboumi-4c1b9abe7e230a39b119bdc45ebcd5e677fad488.zip |
Properly catch and handle database errors
Do not use a singleton for the database.
fix #3203
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/main.cpp b/src/main.cpp index ed05d36..422219a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,22 +3,15 @@ #include <network/poller.hpp> #include <config/config.hpp> #include <logger/logger.hpp> -#include <utils/reload.hpp> #include <utils/xdg.hpp> - -#include <iostream> -#include <memory> -#include <atomic> - -#include <signal.h> +#include <utils/reload.hpp> #ifdef CARES_FOUND # include <network/dns_handler.hpp> #endif -#ifdef SYSTEMD_FOUND -# include <systemd/sd-daemon.h> -#endif +#include <atomic> +#include <signal.h> // A flag set by the SIGINT signal handler. static volatile std::atomic<bool> stop(false); @@ -71,6 +64,12 @@ int main(int ac, char** av) if (hostname.empty()) return config_help("hostname"); + try { + open_database(); + } catch (...) { + return 1; + } + // Block the signals we want to manage. They will be unblocked only during // the epoll_pwait or ppoll calls. This avoids some race conditions, // explained in man 2 pselect on linux |