From 2d35d247844d030fe628b227c836ff657aa4b366 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Tue, 27 Jul 2010 11:18:06 -0700 Subject: [PATCH] rgw: exit after 5 seconds from SIGUSR1 anyway --- src/rgw/rgw_main.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/rgw/rgw_main.cc b/src/rgw/rgw_main.cc index 82976e4d7fa34..ca454a5484323 100644 --- a/src/rgw/rgw_main.cc +++ b/src/rgw/rgw_main.cc @@ -205,6 +205,7 @@ static bool verify_signature(struct req_state *s) static sighandler_t sighandler_segv; static sighandler_t sighandler_usr1; +static sighandler_t sighandler_alrm; /* * ?print out the C++ errors to log in case it fails @@ -214,13 +215,19 @@ static void sigsegv_handler(int signum) BackTrace bt(0); bt.print(cerr); - signal(SIGSEGV, sighandler_segv); + signal(signum, sighandler_segv); } static void godown_handler(int signum) { FCGX_ShutdownPending(); - signal(SIGUSR1, sighandler_usr1); + signal(signum, sighandler_usr1); + alarm(5); +} + +static void godown_alarm(int signum) +{ + _exit(0); } /* @@ -239,6 +246,7 @@ int main(int argc, char *argv[]) sighandler_segv = signal(SIGSEGV, sigsegv_handler); sighandler_usr1 = signal(SIGUSR1, godown_handler); + sighandler_alrm = signal(SIGALRM, godown_alarm); while (FCGX_Accept(&fcgx.in, &fcgx.out, &fcgx.err, &fcgx.envp) >= 0) { -- 2.39.5