X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=write.c;h=998a6d2cccde01cf45bcb6e5dea9d5e11c3f7da0;hp=78e48dcdaf5637acf5754a00553a28c5d647284e;hb=e9805263600a69a88e60edd1c8b4ba9e01a79322;hpb=591b16bbe13ca336c4cef00e8f9f808c1bb4c9a0 diff --git a/write.c b/write.c index 78e48dcd..998a6d2c 100644 --- a/write.c +++ b/write.c @@ -106,14 +106,19 @@ static void initial_delay_pre_select(struct sched *s, struct task *t) if (!idt->start_time.tv_sec && !idt->start_time.tv_usec) { t->error = -E_NO_DELAY; - return; + goto register_check_wav; } if (tv_diff(now, &idt->start_time, &diff) > 0) { t->error = -E_DELAY_TIMEOUT; - return; + goto register_check_wav; } if (tv_diff(&s->timeout , &diff, NULL) > 0) s->timeout = diff; + return; +register_check_wav: + register_task(&the_check_wav_task.task); + s->timeout.tv_sec = 0; + s->timeout.tv_usec = 1; } INIT_STDERR_LOGGING(conf.loglevel_arg) @@ -195,8 +200,12 @@ int main(int argc, char *argv[]) if (!wng) goto out; stdin_set_defaults(&sit); - if (conf.bufsize_given) - sit.bufsize = conf.bufsize_arg; + ret = -ERRNO_TO_PARA_ERROR(EINVAL); + if (conf.bufsize_arg < 0) + goto out; + if (conf.bufsize_arg >= INT_MAX / 1024) + goto out; + sit.bufsize = conf.bufsize_arg * 1024; sit.buf = para_malloc(sit.bufsize); wng->buf = sit.buf; @@ -210,7 +219,6 @@ int main(int argc, char *argv[]) cwt->input_error = &sit.task.error; sprintf(cwt->task.status, "check wav"); cwt->task.pre_select = check_wav_pre_select; - register_task(&cwt->task); idt->task.pre_select = initial_delay_pre_select; sprintf(idt->task.status, "initial_delay");