summaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorlouiz’ <louiz@louiz.org>2016-07-12 00:31:57 +0200
committerlouiz’ <louiz@louiz.org>2016-07-12 00:31:57 +0200
commit4c1b9abe7e230a39b119bdc45ebcd5e677fad488 (patch)
tree52ef96df3fb94412787a3fac099d53199540b8f4 /src/main.cpp
parent03feb403f8fc702481f4e7a0ec0264aa2912ae51 (diff)
downloadbiboumi-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.cpp19
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