X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=command.c;h=e3b15a5ae0e44985a6279ac2f8e137d19fb3c9be;hp=ca08ed729a9f6d65ae34ccacfc931e5bdea6dec8;hb=0b36e0a77fc750af85e969efda7bda0931f389d0;hpb=f88a3b9d8ab2f05c4548504dca5a87f1ec170e25 diff --git a/command.c b/command.c index ca08ed72..e3b15a5a 100644 --- a/command.c +++ b/command.c @@ -185,17 +185,9 @@ static int check_sender_args(int argc, char * const * argv, struct sender_comman break; case SENDER_DENY: case SENDER_ALLOW: - if (argc != 4 && argc != 5) + if (argc != 4 || parse_cidr(argv[3], scd->host, + sizeof(scd->host), &scd->netmask) == NULL) return -E_COMMAND_SYNTAX; - if (!is_valid_ipv4_address(argv[3])) - return -E_COMMAND_SYNTAX; - scd->netmask = 32; - if (argc == 5) { - scd->netmask = atoi(argv[4]); - if (scd->netmask < 0 || scd->netmask > 32) - return -E_COMMAND_SYNTAX; - } - strncpy(scd->host, argv[3], sizeof(scd->host)); break; case SENDER_ADD: case SENDER_DELETE: @@ -313,9 +305,7 @@ int com_stat(int fd, int argc, char * const * argv) struct misc_meta_data tmp, *nmmd = &tmp; char *s; - ret = para_sigaction(SIGUSR1, dummy); - if (ret < 0) - return ret; + para_sigaction(SIGUSR1, dummy); if (argc > 1) num = atoi(argv[1]); @@ -652,22 +642,12 @@ out: } -static int reset_signals(void) +static void reset_signals(void) { - int ret = para_sigaction(SIGCHLD, SIG_IGN); - - if (ret < 0) - return ret; - ret = para_sigaction(SIGINT, SIG_DFL); - if (ret < 0) - return ret; - ret = para_sigaction(SIGTERM, SIG_DFL); - if (ret < 0) - return ret; - ret = para_sigaction(SIGHUP, SIG_DFL); - if (ret < 0) - return ret; - return 1; + para_sigaction(SIGCHLD, SIG_IGN); + para_sigaction(SIGINT, SIG_DFL); + para_sigaction(SIGTERM, SIG_DFL); + para_sigaction(SIGHUP, SIG_DFL); } /** @@ -709,9 +689,7 @@ __noreturn void handle_connect(int fd, const char *peername) char *p, *command = NULL; size_t numbytes; - ret = reset_signals(); - if (ret < 0) - goto err_out; + reset_signals(); /* we need a blocking fd here as recv() might return EAGAIN otherwise. */ ret = mark_fd_blocking(fd); if (ret < 0) @@ -805,8 +783,6 @@ __noreturn void handle_connect(int fd, const char *peername) ret = cmd->handler(fd, argc, argv); mutex_lock(mmd_mutex); mmd->num_commands++; - free(mmd->afd.afhi.info_string); - free(mmd->afd.afhi.chunk_table); mutex_unlock(mmd_mutex); if (ret >= 0) goto out;