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,