diff options
| author | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-11-02 15:37:30 +0100 |
|---|---|---|
| committer | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-11-02 15:37:30 +0100 |
| commit | 90d6a5be050eac9d0f6dc7a7216e412227312bc5 (patch) | |
| tree | ef1b16a843915004549c0c895717a84c5bf19c38 /src/Daemon/Daemon.cpp | |
| parent | e1be4826551cc7aa396d0e4b28770fb8eb12946b (diff) | |
| parent | 1eec1e1b5c5f5c7a032b32165139274b170ec06f (diff) | |
| download | abrt-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.cpp | 15 |
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 { |
