]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - server.c
play: Always check arg count and init keymap.
[paraslash.git] / server.c
index 6529073fd4cec30e446ff70d6bc5eb593cf3ec0a..2018b8eece1988206e2992f560b65fa73059ff5e 100644 (file)
--- a/server.c
+++ b/server.c
@@ -1,8 +1,4 @@
-/*
- * Copyright (C) 1997 Andre Noll <maan@tuebingen.mpg.de>
- *
- * Licensed under the GPL v2. For licencing details see COPYING.
- */
+/* Copyright (C) 1997 Andre Noll <maan@tuebingen.mpg.de>, see file COPYING. */
 
 /** \file server.c Paraslash's main server. */
 
@@ -99,6 +95,9 @@ int mmd_mutex;
 static struct sched sched;
 static struct signal_task *signal_task;
 
+/** The process id of the audio file selector process. */
+pid_t afs_pid = 0;
+
 /** The task responsible for server command handling. */
 struct server_command_task {
        /** TCP port on which para_server listens for connections. */
@@ -183,7 +182,7 @@ void parse_config_or_die(bool reload)
                cf = para_strdup(OPT_STRING_VAL(CONFIG_FILE));
        else
                cf = make_message("%s/.paraslash/server.conf", home);
-       if (!mmd || getpid() != mmd->afs_pid) {
+       if (!mmd || getpid() != afs_pid) {
                if (OPT_GIVEN(USER_LIST))
                        user_list_file = para_strdup(OPT_STRING_VAL(USER_LIST));
                else
@@ -211,7 +210,7 @@ void parse_config_or_die(bool reload)
        if (reload) /* config file overrides command line */
                ret = lls(lls_merge(cf_lpr, cmdline_lpr, CMD_PTR, &merged_lpr,
                        &errctx));
-       else /* command line options overrride config file options */
+       else /* command line options override config file options */
                ret = lls(lls_merge(cmdline_lpr, cf_lpr, CMD_PTR, &merged_lpr,
                        &errctx));
        lls_free_parse_result(cf_lpr, CMD_PTR);
@@ -262,8 +261,8 @@ static void handle_sighup(void)
 
        PARA_NOTICE_LOG("SIGHUP\n");
        parse_config_or_die(true);
-       if (mmd->afs_pid)
-               kill(mmd->afs_pid, SIGHUP);
+       if (afs_pid != 0)
+               kill(afs_pid, SIGHUP);
 }
 
 static int signal_post_select(struct sched *s, __a_unused void *context)
@@ -282,7 +281,7 @@ static int signal_post_select(struct sched *s, __a_unused void *context)
                        int ret = para_reap_child(&pid);
                        if (ret <= 0)
                                break;
-                       if (pid != mmd->afs_pid)
+                       if (pid != afs_pid)
                                continue;
                        PARA_EMERG_LOG("fatal: afs died\n");
                        kill(0, SIGTERM);
@@ -308,8 +307,8 @@ static int signal_post_select(struct sched *s, __a_unused void *context)
                 * processes get killed immediately by the above kill().
                 */
                PARA_INFO_LOG("waiting for afs (pid %d) to die\n",
-                       (int)mmd->afs_pid);
-               waitpid(mmd->afs_pid, NULL, 0);
+                       (int)afs_pid);
+               waitpid(afs_pid, NULL, 0);
 cleanup:
                free(mmd->afd.afhi.chunk_table);
                close_listed_fds();
@@ -396,7 +395,7 @@ static int command_post_select(struct sched *s, void *context)
                memset(sct->argv[i], 0, strlen(sct->argv[i]));
        i = sct->argc - 1 - lls_num_inputs(cmdline_lpr);
        sprintf(sct->argv[i], "para_server (serving %s)", peer_name);
-       handle_connect(new_fd, peer_name);
+       handle_connect(new_fd);
        /* never reached*/
 out:
        if (ret < 0)
@@ -436,7 +435,6 @@ err:
 static int init_afs(int argc, char **argv)
 {
        int ret, afs_server_socket[2];
-       pid_t afs_pid;
        char c;
 
        ret = socketpair(PF_UNIX, SOCK_STREAM, 0, afs_server_socket);
@@ -450,6 +448,7 @@ static int init_afs(int argc, char **argv)
        if (afs_pid == 0) { /* child (afs) */
                int i;
 
+               afs_pid = getpid();
                for (i = argc - 1; i >= 0; i--)
                        memset(argv[i], 0, strlen(argv[i]));
                i = argc - lls_num_inputs(cmdline_lpr) - 1;
@@ -457,7 +456,6 @@ static int init_afs(int argc, char **argv)
                close(afs_server_socket[0]);
                afs_init(afs_socket_cookie, afs_server_socket[1]);
        }
-       mmd->afs_pid = afs_pid;
        close(afs_server_socket[1]);
        if (read(afs_server_socket[0], &c, 1) <= 0) {
                PARA_EMERG_LOG("early afs exit\n");