*** empty log message ***
authorArt Cancro <ajc@citadel.org>
Wed, 16 Feb 2005 20:44:18 +0000 (20:44 +0000)
committerArt Cancro <ajc@citadel.org>
Wed, 16 Feb 2005 20:44:18 +0000 (20:44 +0000)
citadel/citserver.c
citadel/ipc_c_tcp.c
citadel/sendcommand.c
citadel/server_main.c
citadel/sysdep.c

index 88a7ad0ad5beb72fba8d1ea94b02070067531939..b3f369e2a8673dd385bb33759faac732b8f9839a 100644 (file)
@@ -129,6 +129,7 @@ void master_startup(void) {
 void master_cleanup(int exitcode) {
        struct CleanupFunctionHook *fcn;
        static int already_cleaning_up = 0;
+       int i;
 
        if (already_cleaning_up) while(1) sleep(1);
        already_cleaning_up = 1;
@@ -150,8 +151,9 @@ void master_cleanup(int exitcode) {
 #endif
 
        /* Now go away. */
-       lprintf(CTDL_NOTICE, "citserver: Exiting with status %d.\n", exitcode);
+       lprintf(CTDL_NOTICE, "citserver: Exiting with status %d\n", exitcode);
        fflush(stdout); fflush(stderr);
+
        exit(exitcode);
 }
 
index 414acb71dc032232333d853ad84af1fabfab26ce..f4baa4f08c23185a6ee647b5a21b9d976e6c9605 100644 (file)
@@ -67,20 +67,11 @@ void connection_died(CtdlIPC* ipc, int using_ssl) {
        fflush(stdout);
 
 #ifdef HAVE_OPENSSL
-       /*  ...don't try to shut down a connection on a dead socket?
-       SSL_shutdown(ipc->ssl);
-       */
-
        SSL_free(ipc->ssl);
        ipc->ssl = NULL;
 #endif
        shutdown(ipc->sock, 2);
        ipc->sock = -1;
-
-       /* Hangup - let any children know as well */
-       /* kill(0, SIGHUP); */
-       /* This is disabled because it makes the setup program and other
-        * users of sendcommand do really unhappy things. */
 }
 
 
index 3fe918839e7fcf9934be5fff3ee7fcf934bca6d7..c4d6cbda000411ef6aaf39c3327df907547dd592 100644 (file)
@@ -129,6 +129,10 @@ void np_attach_to_server(void)
 }
 
 
+void sendcommand_die(void) {
+       exit(0);
+}
+
 
 /*
  * main
@@ -171,6 +175,7 @@ int main(int argc, char **argv)
        fflush(stderr);
        np_attach_to_server();
        fflush(stderr);
+       setIPCDeathHook(sendcommand_die);
 
        fprintf(stderr, "%s\n", cmd);
        CtdlIPC_chat_send(ipc, cmd);
index c4d6c5e24ec9fcde51321878cd2156d2c4c49e8b..1b94be7f6bcb78af51f48d2c8fd88b2f33efae32 100644 (file)
@@ -74,7 +74,7 @@ int main(int argc, char **argv)
        struct passwd *pw;
        int drop_root_perms = 1;
        size_t size;
-        
+
        /* initialize the master context */
        InitializeMasterCC();
 
@@ -147,6 +147,7 @@ int main(int argc, char **argv)
                "This program is distributed under the terms of the GNU "
                "General Public License.\n");
        lprintf(CTDL_NOTICE, "\n");
+       lprintf(CTDL_DEBUG, "Called as: %s\n", argv[0]);
 
        /* Load site-specific parameters, and set the ipgm secret */
        lprintf(CTDL_INFO, "Loading citadel.config\n");
index 5b51e1286cb02f8600d3e1c57ed8304a57fd34d6..888020f95ffe5ba8f24d1328a3a26d87aa6f351a 100644 (file)
@@ -177,6 +177,7 @@ static RETSIGTYPE signal_cleanup(int signum) {
  */
 void init_sysdep(void) {
        int i;
+       sigset_t set;
 
        /* Avoid vulnerabilities related to FD_SETSIZE if we can. */
 #ifdef FD_SETSIZE
@@ -213,6 +214,13 @@ void init_sysdep(void) {
         * The action for unexpected signals and exceptions should be to
         * call signal_cleanup() to gracefully shut down the server.
         */
+       sigemptyset(&set);
+       sigaddset(&set, SIGINT);
+       sigaddset(&set, SIGQUIT);
+       sigaddset(&set, SIGHUP);
+       sigaddset(&set, SIGTERM);
+       sigaddset(&set, SIGSEGV);
+       sigprocmask(SIG_UNBLOCK, &set, NULL);
        signal(SIGINT, signal_cleanup);
        signal(SIGQUIT, signal_cleanup);
        signal(SIGHUP, signal_cleanup);