SET_TIMEOUT(*script_in);
SET_TIMEOUT(*script_out);
static int modperl_spawn_proc_prog(pTHX_                                   request_rec *r,                                   const char *command,                                   const char ***argv,                                   apr_file_t **script_in,                                   apr_file_t **script_out,                                   apr_file_t **script_err){    exec_info e_info;    apr_pool_t *p;    const char * const *env;    apr_procattr_t *procattr;    apr_proc_t *procnew;    apr_status_t rc = APR_SUCCESS;    e_info.in_pipe   = APR_CHILD_BLOCK;    e_info.out_pipe  = APR_CHILD_BLOCK;    e_info.err_pipe  = APR_CHILD_BLOCK;    e_info.cmd_type  = APR_PROGRAM;     p = r->main ? r->main->pool : r->pool;    *script_out = *script_in = *script_err = NULL;    env = (const char * const *)ap_create_environment(p, r->subprocess_env);    if (FAILED(apr_procattr_create(&procattr, p)) ||        FAILED(apr_procattr_io_set(procattr, e_info.in_pipe,                                   e_info.out_pipe, e_info.err_pipe)) ||        FAILED(apr_procattr_dir_set(procattr,                                     ap_make_dirstr_parent(r->pool,                                                          r->filename))) ||        FAILED(apr_procattr_cmdtype_set(procattr, e_info.cmd_type)))    {        /* Something bad happened, tell the world. */        ap_log_rerror(APLOG_MARK, APLOG_ERR, rc, r,                      "couldn't set child process attributes: %s",                      r->filename);        return rc;    }    procnew = apr_pcalloc(p, sizeof(*procnew));    if (FAILED(ap_os_create_privileged_process(r, procnew, command,                                              *argv, env, procattr, p)))    {        /* Bad things happened. Everyone should have cleaned up. */        ap_log_rerror(APLOG_MARK, APLOG_ERR, rc, r,                      "couldn't create child process: %d: %s",                      rc, r->filename);        return rc;    }    apr_pool_note_subprocess(p, procnew, kill_after_timeout);    if (!(*script_in = procnew->in)) {        Perl_croak(aTHX_ "broken program-in stream");        return APR_EBADF;    }    SET_TIMEOUT(*script_in);    if (!(*script_out = procnew->out)) {        Perl_croak(aTHX_ "broken program-out stream");        return APR_EBADF;    }    SET_TIMEOUT(*script_in);    if (!(*script_err = procnew->err)) {        Perl_croak(aTHX_ "broken program-err stream");        return APR_EBADF;    }    SET_TIMEOUT(*script_err);    return rc;}