comparison src/http/modules/ngx_http_fastcgi_module.c @ 56:3050baa54a26 NGINX_0_1_28

nginx 0.1.28 *) Bugfix: nginx hogs CPU while proxying the huge files. *) Bugfix: nginx could not be built by gcc 4.0 on Linux.
author Igor Sysoev <http://sysoev.ru>
date Fri, 08 Apr 2005 00:00:00 +0400
parents 0d75d65c642f
children b55cbf18157e
comparison
equal deleted inserted replaced
55:729de7d75018 56:3050baa54a26
394 394
395 u->output.tag = (ngx_buf_tag_t) &ngx_http_fastcgi_module; 395 u->output.tag = (ngx_buf_tag_t) &ngx_http_fastcgi_module;
396 396
397 u->conf = &flcf->upstream; 397 u->conf = &flcf->upstream;
398 398
399 u->location = flcf->location; 399 u->location0 = flcf->location;
400 400
401 u->create_request = ngx_http_fastcgi_create_request; 401 u->create_request = ngx_http_fastcgi_create_request;
402 u->reinit_request = ngx_http_fastcgi_reinit_request; 402 u->reinit_request = ngx_http_fastcgi_reinit_request;
403 u->process_header = ngx_http_fastcgi_process_header; 403 u->process_header = ngx_http_fastcgi_process_header;
404 u->send_header = ngx_http_fastcgi_send_header; 404 u->send_header = ngx_http_fastcgi_send_header;
409 u->pipe.input_ctx = r; 409 u->pipe.input_ctx = r;
410 410
411 u->log_ctx = r->connection->log->data; 411 u->log_ctx = r->connection->log->data;
412 u->log_handler = ngx_http_upstream_log_error; 412 u->log_handler = ngx_http_upstream_log_error;
413 413
414 u->schema.len = sizeof("fastcgi://") - 1; 414 u->schema0.len = sizeof("fastcgi://") - 1;
415 u->schema.data = (u_char *) "fastcgi://"; 415 u->schema0.data = (u_char *) "fastcgi://";
416 u->uri.len = sizeof("/") - 1; 416 u->uri0.len = sizeof("/") - 1;
417 u->uri.data = (u_char *) "/"; 417 u->uri0.data = (u_char *) "/";
418 418
419 r->upstream = u; 419 r->upstream = u;
420 420
421 rc = ngx_http_read_client_request_body(r, ngx_http_upstream_init); 421 rc = ngx_http_read_client_request_body(r, ngx_http_upstream_init);
422 422
1242 1242
1243 return NGX_OK; 1243 return NGX_OK;
1244 } 1244 }
1245 1245
1246 1246
1247 static ngx_int_t ngx_http_fastcgi_process_header(ngx_http_request_t *r) 1247 static ngx_int_t
1248 ngx_http_fastcgi_process_header(ngx_http_request_t *r)
1248 { 1249 {
1249 u_char *start, *last; 1250 u_char *start, *last;
1250 ngx_str_t *status_line, line; 1251 ngx_str_t *status_line, line;
1251 ngx_int_t rc, status; 1252 ngx_int_t rc, status;
1252 ngx_uint_t i; 1253 ngx_uint_t i;
2125 * conf->location = NULL; 2126 * conf->location = NULL;
2126 */ 2127 */
2127 2128
2128 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC; 2129 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC;
2129 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC; 2130 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC;
2131 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC;
2132
2130 conf->upstream.send_lowat = NGX_CONF_UNSET_SIZE; 2133 conf->upstream.send_lowat = NGX_CONF_UNSET_SIZE;
2131
2132 conf->upstream.header_buffer_size = NGX_CONF_UNSET_SIZE; 2134 conf->upstream.header_buffer_size = NGX_CONF_UNSET_SIZE;
2133 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC;
2134 conf->upstream.busy_buffers_size = NGX_CONF_UNSET_SIZE; 2135 conf->upstream.busy_buffers_size = NGX_CONF_UNSET_SIZE;
2135
2136 conf->upstream.max_temp_file_size = NGX_CONF_UNSET_SIZE; 2136 conf->upstream.max_temp_file_size = NGX_CONF_UNSET_SIZE;
2137 conf->upstream.temp_file_write_size = NGX_CONF_UNSET_SIZE; 2137 conf->upstream.temp_file_write_size = NGX_CONF_UNSET_SIZE;
2138 2138
2139 conf->upstream.redirect_errors = NGX_CONF_UNSET; 2139 conf->upstream.redirect_errors = NGX_CONF_UNSET;
2140 conf->upstream.pass_unparsed_uri = NGX_CONF_UNSET;
2140 conf->upstream.x_powered_by = NGX_CONF_UNSET; 2141 conf->upstream.x_powered_by = NGX_CONF_UNSET;
2141 2142
2142 /* "fastcgi_cyclic_temp_file" is disabled */ 2143 /* "fastcgi_cyclic_temp_file" is disabled */
2143 conf->upstream.cyclic_temp_file = 0; 2144 conf->upstream.cyclic_temp_file = 0;
2144 2145
2154 2155
2155 size_t size; 2156 size_t size;
2156 2157
2157 ngx_conf_merge_msec_value(conf->upstream.connect_timeout, 2158 ngx_conf_merge_msec_value(conf->upstream.connect_timeout,
2158 prev->upstream.connect_timeout, 60000); 2159 prev->upstream.connect_timeout, 60000);
2160
2159 ngx_conf_merge_msec_value(conf->upstream.send_timeout, 2161 ngx_conf_merge_msec_value(conf->upstream.send_timeout,
2160 prev->upstream.send_timeout, 60000); 2162 prev->upstream.send_timeout, 60000);
2163
2164 ngx_conf_merge_msec_value(conf->upstream.read_timeout,
2165 prev->upstream.read_timeout, 60000);
2166
2161 ngx_conf_merge_size_value(conf->upstream.send_lowat, 2167 ngx_conf_merge_size_value(conf->upstream.send_lowat,
2162 prev->upstream.send_lowat, 0); 2168 prev->upstream.send_lowat, 0);
2163
2164 ngx_conf_merge_msec_value(conf->upstream.read_timeout,
2165 prev->upstream.read_timeout, 60000);
2166
2167 ngx_conf_merge_msec_value(conf->upstream.redirect_errors,
2168 prev->upstream.redirect_errors, 0);
2169
2170 ngx_conf_merge_msec_value(conf->upstream.x_powered_by,
2171 prev->upstream.x_powered_by, 1);
2172
2173 2169
2174 ngx_conf_merge_size_value(conf->upstream.header_buffer_size, 2170 ngx_conf_merge_size_value(conf->upstream.header_buffer_size,
2175 prev->upstream.header_buffer_size, 2171 prev->upstream.header_buffer_size,
2176 (size_t) ngx_pagesize); 2172 (size_t) ngx_pagesize);
2173
2177 2174
2178 ngx_conf_merge_bufs_value(conf->upstream.bufs, prev->upstream.bufs, 2175 ngx_conf_merge_bufs_value(conf->upstream.bufs, prev->upstream.bufs,
2179 8, ngx_pagesize); 2176 8, ngx_pagesize);
2180 2177
2181 if (conf->upstream.bufs.num < 2) { 2178 if (conf->upstream.bufs.num < 2) {
2263 2260
2264 ngx_conf_merge_path_value(conf->upstream.temp_path, 2261 ngx_conf_merge_path_value(conf->upstream.temp_path,
2265 prev->upstream.temp_path, 2262 prev->upstream.temp_path,
2266 NGX_HTTP_FASTCGI_TEMP_PATH, 1, 2, 0, 2263 NGX_HTTP_FASTCGI_TEMP_PATH, 1, 2, 0,
2267 ngx_garbage_collector_temp_handler, cf); 2264 ngx_garbage_collector_temp_handler, cf);
2265
2266
2267 ngx_conf_merge_msec_value(conf->upstream.redirect_errors,
2268 prev->upstream.redirect_errors, 0);
2269
2270 ngx_conf_merge_msec_value(conf->upstream.pass_unparsed_uri,
2271 prev->upstream.pass_unparsed_uri, 0);
2272
2273 if (conf->upstream.pass_unparsed_uri && conf->location->len > 1) {
2274 ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
2275 "\"fastcgi_pass_unparsed_uri\" can be set for "
2276 "location \"/\" or given by regular expression.");
2277 return NGX_CONF_ERROR;
2278 }
2279
2280 ngx_conf_merge_msec_value(conf->upstream.x_powered_by,
2281 prev->upstream.x_powered_by, 1);
2268 2282
2269 2283
2270 ngx_conf_merge_bitmask_value(conf->params, prev->params, 2284 ngx_conf_merge_bitmask_value(conf->params, prev->params,
2271 (NGX_CONF_BITMASK_SET 2285 (NGX_CONF_BITMASK_SET
2272 |NGX_HTTP_FASTCGI_REMOTE_ADDR 2286 |NGX_HTTP_FASTCGI_REMOTE_ADDR
2288 2302
2289 if (conf->vars == NULL) { 2303 if (conf->vars == NULL) {
2290 conf->vars = prev->vars; 2304 conf->vars = prev->vars;
2291 } 2305 }
2292 2306
2307 if (conf->peers == NULL) {
2308 conf->peers = prev->peers;
2309 conf->upstream = prev->upstream;
2310 }
2311
2293 return NGX_CONF_OK; 2312 return NGX_CONF_OK;
2294 } 2313 }