comparison src/http/ngx_http_upstream.c @ 5995:5f179f344096

Upstream: upstream argument in ngx_http_upstream_process_request(). In case of filter finalization, r->upstream might be changed during the ngx_event_pipe() call. Added an argument to preserve it while calling the ngx_http_upstream_process_request() function.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 02 Mar 2015 21:44:42 +0300
parents 5abf5af257a7
children ab660d7c9980
comparison
equal deleted inserted replaced
5994:5abf5af257a7 5995:5f179f344096
74 static ngx_int_t ngx_http_upstream_non_buffered_filter(void *data, 74 static ngx_int_t ngx_http_upstream_non_buffered_filter(void *data,
75 ssize_t bytes); 75 ssize_t bytes);
76 static void ngx_http_upstream_process_downstream(ngx_http_request_t *r); 76 static void ngx_http_upstream_process_downstream(ngx_http_request_t *r);
77 static void ngx_http_upstream_process_upstream(ngx_http_request_t *r, 77 static void ngx_http_upstream_process_upstream(ngx_http_request_t *r,
78 ngx_http_upstream_t *u); 78 ngx_http_upstream_t *u);
79 static void ngx_http_upstream_process_request(ngx_http_request_t *r); 79 static void ngx_http_upstream_process_request(ngx_http_request_t *r,
80 ngx_http_upstream_t *u);
80 static void ngx_http_upstream_store(ngx_http_request_t *r, 81 static void ngx_http_upstream_store(ngx_http_request_t *r,
81 ngx_http_upstream_t *u); 82 ngx_http_upstream_t *u);
82 static void ngx_http_upstream_dummy_handler(ngx_http_request_t *r, 83 static void ngx_http_upstream_dummy_handler(ngx_http_request_t *r,
83 ngx_http_upstream_t *u); 84 ngx_http_upstream_t *u);
84 static void ngx_http_upstream_next(ngx_http_request_t *r, 85 static void ngx_http_upstream_next(ngx_http_request_t *r,
3347 ngx_http_upstream_finalize_request(r, u, NGX_ERROR); 3348 ngx_http_upstream_finalize_request(r, u, NGX_ERROR);
3348 return; 3349 return;
3349 } 3350 }
3350 } 3351 }
3351 3352
3352 ngx_http_upstream_process_request(r); 3353 ngx_http_upstream_process_request(r, u);
3353 } 3354 }
3354 3355
3355 3356
3356 static void 3357 static void
3357 ngx_http_upstream_process_upstream(ngx_http_request_t *r, 3358 ngx_http_upstream_process_upstream(ngx_http_request_t *r,
3415 ngx_http_upstream_finalize_request(r, u, NGX_ERROR); 3416 ngx_http_upstream_finalize_request(r, u, NGX_ERROR);
3416 return; 3417 return;
3417 } 3418 }
3418 } 3419 }
3419 3420
3420 ngx_http_upstream_process_request(r); 3421 ngx_http_upstream_process_request(r, u);
3421 } 3422 }
3422 3423
3423 3424
3424 static void 3425 static void
3425 ngx_http_upstream_process_request(ngx_http_request_t *r) 3426 ngx_http_upstream_process_request(ngx_http_request_t *r,
3427 ngx_http_upstream_t *u)
3426 { 3428 {
3427 ngx_temp_file_t *tf; 3429 ngx_temp_file_t *tf;
3428 ngx_event_pipe_t *p; 3430 ngx_event_pipe_t *p;
3429 ngx_http_upstream_t *u; 3431
3430
3431 u = r->upstream;
3432 p = u->pipe; 3432 p = u->pipe;
3433 3433
3434 if (u->peer.connection) { 3434 if (u->peer.connection) {
3435 3435
3436 if (u->store) { 3436 if (u->store) {