Mercurial > hg > nginx
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) { |