Mercurial > hg > nginx-mail
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 } |