From: mar Date: Wed, 28 Jun 1989 14:02:59 +0000 (+0000) Subject: move signal setup to a proc and call it at appropriate times; X-Git-Tag: PATCH5~27 X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/commitdiff_plain/083a6e9475cc3ee099d60d1973bb58d7c3525dd4 move signal setup to a proc and call it at appropriate times; don't open database on startup if it should be closed. --- diff --git a/server/mr_main.c b/server/mr_main.c index 9e589be3..2d76d215 100644 --- a/server/mr_main.c +++ b/server/mr_main.c @@ -110,16 +110,21 @@ main(argc, argv) get_krbrlm(krb_realm, 1); /* - * Database initialization. + * Database initialization. Only init if database should be open. */ - if ((status = sms_open_database()) != 0) { + if (stat(SMS_MOTD_FILE, &stbuf) != 0) { + if ((status = sms_open_database()) != 0) { com_err(whoami, status, " when trying to open database."); exit(1); + } + sanity_check_database(); + } else { + dormant = ASLEEP; + com_err(whoami, 0, "sleeping, not opening database"); } sanity_check_queries(); - sanity_check_database(); /* * Set up client array handler. @@ -127,21 +132,7 @@ main(argc, argv) nclients = 0; clients = (client **) malloc(0); - /* - * Signal handlers - * There should probably be a few more of these. This is - * duplicated on the next page, be sure to also add any - * additional handlers there. - */ - - if ((((int)signal (SIGTERM, sigshut)) < 0) || - (((int)signal (SIGCHLD, reapchild)) < 0) || - (((int)signal (SIGUSR1, godormant)) < 0) || - (((int)signal (SIGUSR2, gowakeup)) < 0) || - (((int)signal (SIGHUP, sigshut)) < 0)) { - com_err(whoami, errno, " Unable to establish signal handlers."); - exit(1); - } + sms_setup_signals(); journal = fopen(JOURNAL, "a"); if (journal == NULL) { @@ -162,7 +153,10 @@ main(argc, argv) com_err(whoami, 0, "started (pid %d)", getpid()); com_err(whoami, 0, rcsid_sms_main_c); - send_zgram("SMS", "server started"); + if (dormant != ASLEEP) + send_zgram("SMS", "server started"); + else + send_zgram("SMS", "server started, but database closed"); /* * Run until shut down. @@ -178,20 +172,13 @@ main(argc, argv) if (dormant == SLEEPY) { sms_close_database(); com_err(whoami, 0, "database closed"); + sms_setup_signals(); send_zgram("SMS", "database closed"); dormant = ASLEEP; } else if (dormant == GROGGY) { sms_open_database(); com_err(whoami, 0, "database open"); - if ((((int)signal (SIGTERM, sigshut)) < 0) || - (((int)signal (SIGCHLD, reapchild)) < 0) || - (((int)signal (SIGUSR1, godormant)) < 0) || - (((int)signal (SIGUSR2, gowakeup)) < 0) || - (((int)signal (SIGHUP, sigshut)) < 0)) { - com_err(whoami, errno, - " Unable to reestablish signal handlers."); - exit(1); - } + sms_setup_signals(); send_zgram("SMS", "database open again"); dormant = AWAKE; } @@ -533,3 +520,18 @@ void gowakeup() } dormant = GROGGY; } + + +sms_setup_signals() +{ + /* There should probably be a few more of these. */ + + if ((((int)signal (SIGTERM, sigshut)) < 0) || + (((int)signal (SIGCHLD, reapchild)) < 0) || + (((int)signal (SIGUSR1, godormant)) < 0) || + (((int)signal (SIGUSR2, gowakeup)) < 0) || + (((int)signal (SIGHUP, sigshut)) < 0)) { + com_err(whoami, errno, " Unable to establish signal handlers."); + exit(1); + } +}