]> andersk Git - moira.git/commitdiff
move signal setup to a proc and call it at appropriate times;
authormar <mar>
Wed, 28 Jun 1989 14:02:59 +0000 (14:02 +0000)
committermar <mar>
Wed, 28 Jun 1989 14:02:59 +0000 (14:02 +0000)
don't open database on startup if it should be closed.

server/mr_main.c

index 9e589be37f2f35ea53c38d0eda8ec3d000f1fcf8..2d76d215bd919071416d1a3b68211fb48135a2b7 100644 (file)
@@ -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);
+    }
+}
This page took 0.044569 seconds and 5 git commands to generate.