/** The file containing user information (public key, permissions). */
static char *user_list_file = NULL;
-static int mmd_shm_id;
/** The task responsible for server command handling. */
static void init_ipc_or_die(void)
{
void *shm;
- int ret = shm_new(sizeof(struct misc_meta_data));
+ int shmid, ret = shm_new(sizeof(struct misc_meta_data));
if (ret < 0)
goto err_out;
-
- ret = shm_attach(ret, ATTACH_RW, &shm);
+ shmid = ret;
+ ret = shm_attach(shmid, ATTACH_RW, &shm);
+ shm_destroy(shmid);
if (ret < 0)
goto err_out;
mmd = shm;
- mmd_shm_id = ret;
ret = mutex_new();
if (ret < 0)
void parse_config_or_die(int override)
{
char *home = para_homedir();
- int ret, ll = conf.loglevel_arg;
+ int ret;
char *cf;
daemon_close_log();
.initialize = 0,
.check_required = 1,
.check_ambiguity = 0,
- .print_errors = 1
+ .print_errors = !conf.daemon_given
};
server_cmdline_parser_config_file(cf, &conf, ¶ms);
conf.daemon_given = tmp;
daemon_set_logfile(conf.logfile_arg);
daemon_open_log_or_die();
}
- daemon_set_loglevel(ll);
+ daemon_set_loglevel(conf.loglevel_arg);
init_colors_or_die();
daemon_set_flag(DF_LOG_PID);
daemon_set_flag(DF_LOG_LL);
kill(0, SIGTERM);
mutex_destroy(mmd_mutex);
shm_detach(mmd);
- shm_destroy(mmd_shm_id);
-
exit(EXIT_FAILURE);
}
}
drop_privileges_or_die(conf.user_arg, conf.group_arg);
/* parse config file, open log and set defaults */
parse_config_or_die(0);
- log_welcome("para_server", conf.loglevel_arg);
+ log_welcome("para_server");
init_ipc_or_die(); /* init mmd struct and mmd->lock */
/* make sure, the global now pointer is uptodate */
gettimeofday(now, NULL);