Merge branch 'refs/heads/t/clean_server_exit'
[paraslash.git] / server.c
index 076bf4f..f19fc99 100644 (file)
--- a/server.c
+++ b/server.c
@@ -45,6 +45,7 @@
 #include "afh.h"
 #include "string.h"
 #include "afs.h"
+#include "net.h"
 #include "server.h"
 #include "list.h"
 #include "send.h"
@@ -52,7 +53,6 @@
 #include "vss.h"
 #include "config.h"
 #include "close_on_fork.h"
-#include "net.h"
 #include "daemon.h"
 #include "ipc.h"
 #include "fd.h"
@@ -505,6 +505,7 @@ static int init_afs(int argc, char **argv)
                int i;
 
                afs_pid = getpid();
+               crypt_shutdown();
                user_list_deplete();
                for (i = argc - 1; i >= 0; i--)
                        memset(argv[i], 0, strlen(argv[i]));
@@ -564,7 +565,7 @@ static void server_init(int argc, char **argv, struct server_command_task *sct)
        if (OPT_GIVEN(DAEMON))
                daemon_pipe = daemonize(true /* parent waits for SIGTERM */);
        server_pid = getpid();
-       init_random_seed_or_die();
+       crypt_init();
        daemon_log_welcome("server");
        init_ipc_or_die(); /* init mmd struct, mmd and log mutex */
        daemon_set_start_time();
@@ -684,12 +685,12 @@ int main(int argc, char *argv[])
         */
        mutex_unlock(mmd_mutex);
        sched_shutdown(&sched);
+       crypt_shutdown();
        signal_shutdown(signal_task);
        if (!process_is_command_handler()) { /* parent (server) */
                mutex_destroy(mmd_mutex);
                daemon_set_hooks(NULL, NULL); /* only one process remaining */
                mutex_destroy(log_mutex);
-               shm_detach(mmd);
                deplete_close_on_fork_list();
                if (ret < 0)
                        PARA_EMERG_LOG("%s\n", para_strerror(-ret));