summaryrefslogtreecommitdiffstats
path: root/src/Daemon/Daemon.cpp
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2009-11-02 15:37:30 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2009-11-02 15:37:30 +0100
commit90d6a5be050eac9d0f6dc7a7216e412227312bc5 (patch)
treeef1b16a843915004549c0c895717a84c5bf19c38 /src/Daemon/Daemon.cpp
parente1be4826551cc7aa396d0e4b28770fb8eb12946b (diff)
parent1eec1e1b5c5f5c7a032b32165139274b170ec06f (diff)
downloadabrt-90d6a5be050eac9d0f6dc7a7216e412227312bc5.tar.gz
abrt-90d6a5be050eac9d0f6dc7a7216e412227312bc5.tar.xz
abrt-90d6a5be050eac9d0f6dc7a7216e412227312bc5.zip
Merge branch 'master' of ssh://git.fedorahosted.org/git/abrt
Diffstat (limited to 'src/Daemon/Daemon.cpp')
-rw-r--r--src/Daemon/Daemon.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/Daemon/Daemon.cpp b/src/Daemon/Daemon.cpp
index 188cd0d..0e81dfd 100644
--- a/src/Daemon/Daemon.cpp
+++ b/src/Daemon/Daemon.cpp
@@ -106,8 +106,9 @@ typedef struct cron_callback_data_t
} cron_callback_data_t;
-static uint8_t s_sig_caught;
+static uint8_t s_sig_caught; /* must be one byte */
static int s_signal_pipe[2];
+static int s_signal_pipe_write = -1;
static unsigned s_timeout;
static bool s_exiting;
@@ -443,10 +444,12 @@ static int Lock()
/* we leak opened lfd intentionally */
}
-static void handle_fatal_signal(int signal)
+static void handle_fatal_signal(int signo)
{
- s_sig_caught = signal;
- write(s_signal_pipe[1], &s_sig_caught, 1);
+ s_sig_caught = signo;
+ VERB3 log("Got signal %d", signo);
+ if (s_signal_pipe_write >= 0)
+ write(s_signal_pipe_write, &s_sig_caught, 1);
}
/* Signal pipe handler */
@@ -458,6 +461,7 @@ static gboolean handle_signal_cb(GIOChannel *gio, GIOCondition condition, gpoint
if (len == 1)
{
/* we did receive a signal */
+ VERB3 log("Got signal %d through signal pipe", signo);
s_exiting = 1;
return TRUE;
}
@@ -828,6 +832,9 @@ int main(int argc, char** argv)
start_syslog_logging();
}
+ /* Only now we want signal pipe to work */
+ s_signal_pipe_write = s_signal_pipe[1];
+
/* Enter the event loop */
try
{