aboutsummaryrefslogtreecommitdiff
path: root/src/http/ngx_http_request.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2009-08-30 09:47:11 +0000
committerIgor Sysoev <igor@sysoev.ru>2009-08-30 09:47:11 +0000
commitddda411d146607ec6cd61fcbb3fff95340a28df2 (patch)
treee5f20c9cb3103abd0d297b3be1cccff61349028d /src/http/ngx_http_request.c
parent8c491a77bc297906fb76d4c661547161a0a425be (diff)
downloadnginx-ddda411d146607ec6cd61fcbb3fff95340a28df2.tar.gz
nginx-ddda411d146607ec6cd61fcbb3fff95340a28df2.zip
*) ngx_http_ephemeral
*) use preallocated terminal_posted_request
Diffstat (limited to 'src/http/ngx_http_request.c')
-rw-r--r--src/http/ngx_http_request.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index 187310b96..c8976498c 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -1810,13 +1810,15 @@ ngx_http_run_posted_requests(ngx_connection_t *c)
ngx_int_t
-ngx_http_post_request(ngx_http_request_t *r)
+ngx_http_post_request(ngx_http_request_t *r, ngx_http_posted_request_t *pr)
{
- ngx_http_posted_request_t *pr, **p;
+ ngx_http_posted_request_t **p;
- pr = ngx_palloc(r->pool, sizeof(ngx_http_posted_request_t));
if (pr == NULL) {
- return NGX_ERROR;
+ pr = ngx_palloc(r->pool, sizeof(ngx_http_posted_request_t));
+ if (pr == NULL) {
+ return NGX_ERROR;
+ }
}
pr->request = r;
@@ -1965,7 +1967,7 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc)
}
}
- if (ngx_http_post_request(pr) != NGX_OK) {
+ if (ngx_http_post_request(pr, NULL) != NGX_OK) {
r->main->count++;
ngx_http_terminate_request(r, 0);
return;
@@ -2025,8 +2027,9 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc)
static void
ngx_http_terminate_request(ngx_http_request_t *r, ngx_int_t rc)
{
- ngx_http_cleanup_t *cln;
- ngx_http_request_t *mr;
+ ngx_http_cleanup_t *cln;
+ ngx_http_request_t *mr;
+ ngx_http_ephemeral_t *e;
mr = r->main;
@@ -2054,9 +2057,10 @@ ngx_http_terminate_request(ngx_http_request_t *r, ngx_int_t rc)
return;
}
+ e = ngx_http_ephemeral(mr);
mr->posted_requests = NULL;
mr->write_event_handler = ngx_http_terminate_handler;
- (void) ngx_http_post_request(mr);
+ (void) ngx_http_post_request(mr, &e->terminal_posted_request);
return;
}