summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2009-02-23 16:46:54 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2009-02-23 16:46:54 +0100
commit626938e2d237a00e2ecacd92f94435360d8399c3 (patch)
tree38b53194bba4732bd656bfa1131ed9c6188d094e
parentd740acb4e7c11eaf5deb94b35f33f0bfb7ee99be (diff)
downloadabrt-626938e2d237a00e2ecacd92f94435360d8399c3.tar.gz
abrt-626938e2d237a00e2ecacd92f94435360d8399c3.tar.xz
abrt-626938e2d237a00e2ecacd92f94435360d8399c3.zip
Better signal handling in daemon
-rw-r--r--src/Daemon/CrashWatcher.cpp9
-rw-r--r--src/Daemon/CrashWatcher.h1
-rw-r--r--src/Daemon/Daemon.cpp22
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)
{