You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by jo...@apache.org on 2004/05/05 16:52:44 UTC
cvs commit: httpd-2.0/modules/generators mod_cgi.c
jorton 2004/05/05 07:52:44
Modified: modules/generators mod_cgi.c
Log:
* modules/generators/mod_cgi.c (cgi_handler): Combine common code
between nph and non-nph handling; use a CGI bucket for both cases if
APR_FILES_AS_SOCKETS.
Revision Changes Path
1.162 +20 -23 httpd-2.0/modules/generators/mod_cgi.c
Index: mod_cgi.c
===================================================================
RCS file: /home/cvs/httpd-2.0/modules/generators/mod_cgi.c,v
retrieving revision 1.161
retrieving revision 1.162
diff -u -r1.161 -r1.162
--- mod_cgi.c 18 Apr 2004 16:02:57 -0000 1.161
+++ mod_cgi.c 5 May 2004 14:52:44 -0000 1.162
@@ -726,6 +726,7 @@
cgi_server_conf *conf;
apr_status_t rv;
cgi_exec_info_t e_info;
+ conn_rec *c = r->connection;
if(strcmp(r->handler, CGI_MAGIC_TYPE) && strcmp(r->handler, "cgi-script"))
return DECLINED;
@@ -807,7 +808,7 @@
/* Transfer any put/post args, CERN style...
* Note that we already ignore SIGPIPE in the core server.
*/
- bb = apr_brigade_create(r->pool, r->connection->bucket_alloc);
+ bb = apr_brigade_create(r->pool, c->bucket_alloc);
seen_eos = 0;
child_stopped_reading = 0;
if (conf->logname) {
@@ -883,24 +884,27 @@
apr_file_flush(script_out);
apr_file_close(script_out);
- /* Handle script return... */
- if (script_in && !nph) {
- conn_rec *c = r->connection;
- const char *location;
- char sbuf[MAX_STRING_LEN];
- int ret;
+ AP_DEBUG_ASSERT(script_in != NULL);
-#if APR_FILES_AS_SOCKETS
- apr_file_pipe_timeout_set(script_in, 0);
- apr_file_pipe_timeout_set(script_err, 0);
+ apr_brigade_cleanup(bb);
- b = cgi_bucket_create(r, script_in, script_err, c->bucket_alloc);
+#if APR_FILES_AS_SOCKETS
+ apr_file_pipe_timeout_set(script_in, 0);
+ apr_file_pipe_timeout_set(script_err, 0);
+
+ b = cgi_bucket_create(r, script_in, script_err, c->bucket_alloc);
#else
- b = apr_bucket_pipe_create(script_in, c->bucket_alloc);
+ b = apr_bucket_pipe_create(script_in, c->bucket_alloc);
#endif
- APR_BRIGADE_INSERT_TAIL(bb, b);
- b = apr_bucket_eos_create(c->bucket_alloc);
- APR_BRIGADE_INSERT_TAIL(bb, b);
+ APR_BRIGADE_INSERT_TAIL(bb, b);
+ b = apr_bucket_eos_create(c->bucket_alloc);
+ APR_BRIGADE_INSERT_TAIL(bb, b);
+
+ /* Handle script return... */
+ if (!nph) {
+ const char *location;
+ char sbuf[MAX_STRING_LEN];
+ int ret;
if ((ret = ap_scan_script_header_err_brigade(r, bb, sbuf))) {
return log_script(r, conf, ret, dbuf, sbuf, bb, script_err);
@@ -952,9 +956,7 @@
apr_file_close(script_err);
}
-
- if (script_in && nph) {
- conn_rec *c = r->connection;
+ else /* nph */ {
struct ap_filter_t *cur;
/* get rid of all filters up through protocol... since we
@@ -968,11 +970,6 @@
}
r->output_filters = r->proto_output_filters = cur;
- bb = apr_brigade_create(r->pool, c->bucket_alloc);
- b = apr_bucket_pipe_create(script_in, c->bucket_alloc);
- APR_BRIGADE_INSERT_TAIL(bb, b);
- b = apr_bucket_eos_create(c->bucket_alloc);
- APR_BRIGADE_INSERT_TAIL(bb, b);
ap_pass_brigade(r->output_filters, bb);
}