X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.c;h=e0df714be975b083f4d3cc7116ad0af2501a2b46;hp=cb32d4d962e129ccf3589fa2ba3db8eb72e18984;hb=329bf73b72eea2c5be1bcbd9a9602c0a8994d0be;hpb=ccbe76ece6a8d05439b2dbb51c1c777735c4171e diff --git a/server.c b/server.c index cb32d4d9..e0df714b 100644 --- a/server.c +++ b/server.c @@ -407,15 +407,16 @@ static int command_post_select(struct sched *s, void *context) ret = task_get_notification(sct->task); if (ret < 0) - return ret; + goto fail; for (n = 0; n < sct->num_listen_fds; n++) { ret = command_task_accept(n, s, sct); - if (ret < 0) { - free(sct->listen_fds); - return ret; - } + if (ret < 0) + goto fail; } return 0; +fail: + free(sct->listen_fds); + return ret; } static void init_server_command_task(struct server_command_task *sct, @@ -678,12 +679,13 @@ int main(int argc, char *argv[]) deplete_close_on_fork_list(); if (ret < 0) PARA_EMERG_LOG("%s\n", para_strerror(-ret)); + vss_shutdown(); } else { + vss_shutdown(); alarm(ALARM_TIMEOUT); close_listed_fds(); ret = handle_connect(sct->child_fd); } - vss_shutdown(); shm_detach(mmd); user_list_deplete(); free_lpr();