From: Jean-Jacques Clar Date: Mon, 14 Jun 2004 17:28:25 +0000 (+0000) Subject: Added new field in apr_procattr_t and cgi_exec_info_t structures to support loading... X-Git-Tag: pre_ajp_proxy~151 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=136ee0803334dded3aaa3467f7debd4de2a350c4;p=apache Added new field in apr_procattr_t and cgi_exec_info_t structures to support loading in current or new address space (NetWare ONLY). Replaced changes that added APR_PROGRAM_ADDRSPACE committed 6/11/04. Reviewed by Brad Nicholes git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@103946 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/arch/netware/mod_netware.c b/modules/arch/netware/mod_netware.c index 3aa110b883..f392e7b5c7 100644 --- a/modules/arch/netware/mod_netware.c +++ b/modules/arch/netware/mod_netware.c @@ -99,7 +99,6 @@ static apr_status_t ap_cgi_build_command(const char **cmd, const char ***argv, char *ext = NULL; char *cmd_only, *ptr; const char *new_cmd; - const char *detached = NULL; netware_dir_config *d; apr_file_t *fh; const char *args = ""; @@ -153,13 +152,8 @@ static apr_status_t ap_cgi_build_command(const char **cmd, const char ***argv, *cmd = apr_pstrcat (p, new_cmd, " ", cmd_only, NULL); /* Run in its own address space if specified */ - detached = apr_table_get(d->file_handler_mode, ext); - if (detached) { - e_info->cmd_type = APR_PROGRAM_ADDRSPACE; - } - else { - e_info->cmd_type = APR_PROGRAM; - } + if(apr_table_get(d->file_handler_mode, ext)) + e_info->addrspace = 1; } /* Tokenize the full command string into its arguments */ diff --git a/modules/generators/mod_cgi.c b/modules/generators/mod_cgi.c index 255878bb6f..5e93272027 100644 --- a/modules/generators/mod_cgi.c +++ b/modules/generators/mod_cgi.c @@ -432,6 +432,8 @@ static apr_status_t run_cgi_child(apr_file_t **script_out, ((rc = apr_procattr_detach_set(procattr, e_info->detached)) != APR_SUCCESS) || + ((rc = apr_procattr_addrspace_set(procattr, + e_info->addrspace)) != APR_SUCCESS) || ((rc = apr_procattr_child_errfn_set(procattr, cgi_child_errfn)) != APR_SUCCESS)) { /* Something bad happened, tell the world. */ ap_log_rerror(APLOG_MARK, APLOG_ERR, rc, r, @@ -788,6 +790,7 @@ static int cgi_handler(request_rec *r) e_info.bb = NULL; e_info.ctx = NULL; e_info.next = NULL; + e_info.addrspace = 0; /* build the command line */ if ((rv = cgi_build_command(&command, &argv, r, p, &e_info)) != APR_SUCCESS) { @@ -1055,6 +1058,7 @@ static apr_status_t include_cmd(include_ctx_t *ctx, ap_filter_t *f, e_info.bb = &bb; e_info.ctx = ctx; e_info.next = f->next; + e_info.addrspace = 0; if ((rv = cgi_build_command(&command, &argv, r, r->pool, &e_info)) != APR_SUCCESS) { diff --git a/modules/generators/mod_cgi.h b/modules/generators/mod_cgi.h index c28b486bfc..96fbe09f0c 100644 --- a/modules/generators/mod_cgi.h +++ b/modules/generators/mod_cgi.h @@ -31,6 +31,7 @@ typedef struct { apr_bucket_brigade **bb; include_ctx_t *ctx; ap_filter_t *next; + apr_int32_t addrspace; } cgi_exec_info_t; /**