diff options
| author | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-02-23 16:46:54 +0100 |
|---|---|---|
| committer | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-02-23 16:46:54 +0100 |
| commit | 626938e2d237a00e2ecacd92f94435360d8399c3 (patch) | |
| tree | 38b53194bba4732bd656bfa1131ed9c6188d094e | |
| parent | d740acb4e7c11eaf5deb94b35f33f0bfb7ee99be (diff) | |
| download | abrt-626938e2d237a00e2ecacd92f94435360d8399c3.tar.gz abrt-626938e2d237a00e2ecacd92f94435360d8399c3.tar.xz abrt-626938e2d237a00e2ecacd92f94435360d8399c3.zip | |
Better signal handling in daemon
| -rw-r--r-- | src/Daemon/CrashWatcher.cpp | 9 | ||||
| -rw-r--r-- | src/Daemon/CrashWatcher.h | 1 | ||||
| -rw-r--r-- | src/Daemon/Daemon.cpp | 22 |
3 files changed, 18 insertions, 14 deletions
diff --git a/src/Daemon/CrashWatcher.cpp b/src/Daemon/CrashWatcher.cpp index d0b6923..f1b6828 100644 --- a/src/Daemon/CrashWatcher.cpp +++ b/src/Daemon/CrashWatcher.cpp @@ -29,10 +29,6 @@ #include <csignal> #include <sstream> -void terminate(int signal) -{ - exit(0); -} /* just a helper function */ template< class T > std::string @@ -129,7 +125,6 @@ dbus_vector_map_crash_infos_t CCrashWatcher::GetCrashInfosMap(const std::string { dbus_vector_map_crash_infos_t retval; vector_crash_infos_t crash_info; - std::cerr << pUID << std::endl; unsigned long unix_uid = m_pConn->sender_unix_uid(pUID.c_str()); crash_info = m_pMW->GetCrashInfos(to_string(unix_uid)); for (vector_crash_infos_t::iterator it = crash_info.begin(); it!=crash_info.end(); ++it) { @@ -190,10 +185,6 @@ void CCrashWatcher::GStartWatch() delete[] buff; } -void CCrashWatcher::RegisterSignals() -{ - signal(SIGTERM, terminate); -} void CCrashWatcher::Daemonize() { diff --git a/src/Daemon/CrashWatcher.h b/src/Daemon/CrashWatcher.h index bb3b3ee..b2e545f 100644 --- a/src/Daemon/CrashWatcher.h +++ b/src/Daemon/CrashWatcher.h @@ -39,7 +39,6 @@ class CCrashWatcher { private: static gboolean handle_event_cb(GIOChannel *gio, GIOCondition condition, gpointer data); - void RegisterSignals(); void StartWatch(); void GStartWatch(); void Lock(); diff --git a/src/Daemon/Daemon.cpp b/src/Daemon/Daemon.cpp index 2fa9823..835b76f 100644 --- a/src/Daemon/Daemon.cpp +++ b/src/Daemon/Daemon.cpp @@ -22,17 +22,31 @@ #include <cstdio> #define daemonize 0 +CCrashWatcher *ccdaemon; +DBus::Glib::BusDispatcher *dispatcher; + +void terminate(int signal) +{ + fprintf(stderr, "Got SIGINT/SIGTERM, cleaning up..\n"); + delete ccdaemon; + delete dispatcher; + exit(0); +} int main(int argc, char** argv){ + /*signal handlers */ + signal(SIGTERM, terminate); + signal(SIGINT, terminate); /* connect to dbus */ - DBus::Glib::BusDispatcher *dispatcher; + //DBus::Glib::BusDispatcher *dispatcher; dispatcher = new DBus::Glib::BusDispatcher(); dispatcher->attach(NULL); DBus::default_dispatcher = dispatcher; DBus::Connection conn = DBus::Connection::SystemBus(); try{ - CCrashWatcher daemon(DEBUG_DUMPS_DIR, conn); + //CCrashWatcher daemon(DEBUG_DUMPS_DIR, conn); + ccdaemon = new CCrashWatcher(DEBUG_DUMPS_DIR, conn); //if (argc > 1){ // if (strcmp(argv[1], "-d") == 0){ // daemonize = 0; @@ -40,7 +54,7 @@ int main(int argc, char** argv){ // } if(daemonize){ try{ - daemon.Daemonize(); + ccdaemon->Daemonize(); } catch(std::string err) { @@ -55,7 +69,7 @@ int main(int argc, char** argv){ #ifdef DEBUG std::cerr << "trying to run" << std::endl; #endif /*DEBUG*/ - daemon.Run(); + ccdaemon->Run(); } catch(std::string err) { |
