Mercurial > hg > nginx
comparison src/http/ngx_http_upstream.c @ 1705:d22095839d86
optimize r->upstream usage
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 10 Dec 2007 12:29:43 +0000 |
parents | 40d004d95d88 |
children | 9242e21d2f8d |
comparison
equal
deleted
inserted
replaced
1704:e584e946e198 | 1705:d22095839d86 |
---|---|
379 | 379 |
380 uscf = u->conf->upstream; | 380 uscf = u->conf->upstream; |
381 | 381 |
382 } else { | 382 } else { |
383 | 383 |
384 host = &r->upstream->resolved->host; | 384 host = &u->resolved->host; |
385 | 385 |
386 umcf = ngx_http_get_module_main_conf(r, ngx_http_upstream_module); | 386 umcf = ngx_http_get_module_main_conf(r, ngx_http_upstream_module); |
387 | 387 |
388 uscfp = umcf->upstreams.elts; | 388 uscfp = umcf->upstreams.elts; |
389 | 389 |
838 | 838 |
839 if (u->reinit_request(r) != NGX_OK) { | 839 if (u->reinit_request(r) != NGX_OK) { |
840 return NGX_ERROR; | 840 return NGX_ERROR; |
841 } | 841 } |
842 | 842 |
843 ngx_memzero(&r->upstream->headers_in, | 843 ngx_memzero(&u->headers_in, sizeof(ngx_http_upstream_headers_in_t)); |
844 sizeof(ngx_http_upstream_headers_in_t)); | 844 |
845 | 845 if (ngx_list_init(&u->headers_in.headers, r->pool, 8, |
846 if (ngx_list_init(&r->upstream->headers_in.headers, r->pool, 8, | |
847 sizeof(ngx_table_elt_t)) | 846 sizeof(ngx_table_elt_t)) |
848 != NGX_OK) | 847 != NGX_OK) |
849 { | 848 { |
850 return NGX_ERROR; | 849 return NGX_ERROR; |
851 } | 850 } |
1076 u->buffer.end = u->buffer.start + u->conf->buffer_size; | 1075 u->buffer.end = u->buffer.start + u->conf->buffer_size; |
1077 u->buffer.temporary = 1; | 1076 u->buffer.temporary = 1; |
1078 | 1077 |
1079 u->buffer.tag = u->output.tag; | 1078 u->buffer.tag = u->output.tag; |
1080 | 1079 |
1081 if (ngx_list_init(&r->upstream->headers_in.headers, r->pool, 8, | 1080 if (ngx_list_init(&u->headers_in.headers, r->pool, 8, |
1082 sizeof(ngx_table_elt_t)) | 1081 sizeof(ngx_table_elt_t)) |
1083 != NGX_OK) | 1082 != NGX_OK) |
1084 { | 1083 { |
1085 ngx_http_upstream_finalize_request(r, u, | 1084 ngx_http_upstream_finalize_request(r, u, |
1086 NGX_HTTP_INTERNAL_SERVER_ERROR); | 1085 NGX_HTTP_INTERNAL_SERVER_ERROR); |
1245 } | 1244 } |
1246 } | 1245 } |
1247 | 1246 |
1248 umcf = ngx_http_get_module_main_conf(r, ngx_http_upstream_module); | 1247 umcf = ngx_http_get_module_main_conf(r, ngx_http_upstream_module); |
1249 | 1248 |
1250 if (r->upstream->headers_in.x_accel_redirect) { | 1249 if (u->headers_in.x_accel_redirect) { |
1251 | 1250 |
1252 ngx_http_upstream_finalize_request(r, u, NGX_DECLINED); | 1251 ngx_http_upstream_finalize_request(r, u, NGX_DECLINED); |
1253 | 1252 |
1254 part = &r->upstream->headers_in.headers.part; | 1253 part = &u->headers_in.headers.part; |
1255 h = part->elts; | 1254 h = part->elts; |
1256 | 1255 |
1257 for (i = 0; /* void */; i++) { | 1256 for (i = 0; /* void */; i++) { |
1258 | 1257 |
1259 if (i >= part->nelts) { | 1258 if (i >= part->nelts) { |
1276 return; | 1275 return; |
1277 } | 1276 } |
1278 } | 1277 } |
1279 } | 1278 } |
1280 | 1279 |
1281 uri = &r->upstream->headers_in.x_accel_redirect->value; | 1280 uri = &u->headers_in.x_accel_redirect->value; |
1282 args.len = 0; | 1281 args.len = 0; |
1283 args.data = NULL; | 1282 args.data = NULL; |
1284 flags = 0; | 1283 flags = 0; |
1285 | 1284 |
1286 if (ngx_http_parse_unsafe_uri(r, uri, &args, &flags) != NGX_OK) { | 1285 if (ngx_http_parse_unsafe_uri(r, uri, &args, &flags) != NGX_OK) { |
1298 | 1297 |
1299 ngx_http_internal_redirect(r, uri, &args); | 1298 ngx_http_internal_redirect(r, uri, &args); |
1300 return; | 1299 return; |
1301 } | 1300 } |
1302 | 1301 |
1303 part = &r->upstream->headers_in.headers.part; | 1302 part = &u->headers_in.headers.part; |
1304 h = part->elts; | 1303 h = part->elts; |
1305 | 1304 |
1306 for (i = 0; /* void */; i++) { | 1305 for (i = 0; /* void */; i++) { |
1307 | 1306 |
1308 if (i >= part->nelts) { | 1307 if (i >= part->nelts) { |
2162 goto failed; | 2161 goto failed; |
2163 } | 2162 } |
2164 | 2163 |
2165 #endif | 2164 #endif |
2166 | 2165 |
2167 if (r->upstream->headers_in.last_modified) { | 2166 if (u->headers_in.last_modified) { |
2168 | 2167 |
2169 last_modified = &r->upstream->headers_in.last_modified->value; | 2168 last_modified = &u->headers_in.last_modified->value; |
2170 | 2169 |
2171 lm = ngx_http_parse_time(last_modified->data, last_modified->len); | 2170 lm = ngx_http_parse_time(last_modified->data, last_modified->len); |
2172 | 2171 |
2173 if (lm != NGX_ERROR) { | 2172 if (lm != NGX_ERROR) { |
2174 if (ngx_set_file_time(temp->data, u->pipe->temp_file->file.fd, lm) | 2173 if (ngx_set_file_time(temp->data, u->pipe->temp_file->file.fd, lm) |
2370 static void | 2369 static void |
2371 ngx_http_upstream_cleanup(void *data) | 2370 ngx_http_upstream_cleanup(void *data) |
2372 { | 2371 { |
2373 ngx_http_request_t *r = data; | 2372 ngx_http_request_t *r = data; |
2374 | 2373 |
2374 ngx_http_upstream_t *u; | |
2375 | |
2375 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, | 2376 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, |
2376 "cleanup http upstream request: \"%V\"", &r->uri); | 2377 "cleanup http upstream request: \"%V\"", &r->uri); |
2377 | 2378 |
2378 if (r->upstream->resolved && r->upstream->resolved->ctx) { | 2379 u = r->upstream; |
2379 ngx_resolve_name_done(r->upstream->resolved->ctx); | 2380 |
2380 } | 2381 if (u->resolved && u->resolved->ctx) { |
2381 | 2382 ngx_resolve_name_done(u->resolved->ctx); |
2382 ngx_http_upstream_finalize_request(r, r->upstream, NGX_DONE); | 2383 } |
2384 | |
2385 ngx_http_upstream_finalize_request(r, u, NGX_DONE); | |
2383 } | 2386 } |
2384 | 2387 |
2385 | 2388 |
2386 static void | 2389 static void |
2387 ngx_http_upstream_finalize_request(ngx_http_request_t *r, | 2390 ngx_http_upstream_finalize_request(ngx_http_request_t *r, |