diff options
author | Piotr Sikora <piotrsikora@google.com> | 2017-03-24 03:37:34 -0700 |
---|---|---|
committer | Piotr Sikora <piotrsikora@google.com> | 2017-03-24 03:37:34 -0700 |
commit | cfdce50657cb8d25058de3d677f03cdef0d5de51 (patch) | |
tree | 122dd12203f4dcf5a6c2438fe13f31af8d8bce82 /src/http/ngx_http_request.c | |
parent | fa0992ed295ba83f711ca3d1ba8fc1baaa5760ca (diff) | |
download | nginx-cfdce50657cb8d25058de3d677f03cdef0d5de51.tar.gz nginx-cfdce50657cb8d25058de3d677f03cdef0d5de51.zip |
Added support for trailers in HTTP responses.
Example:
ngx_table_elt_t *h;
h = ngx_list_push(&r->headers_out.trailers);
if (h == NULL) {
return NGX_ERROR;
}
ngx_str_set(&h->key, "Fun");
ngx_str_set(&h->value, "with trailers");
h->hash = ngx_hash_key_lc(h->key.data, h->key.len);
The code above adds "Fun: with trailers" trailer to the response.
Modules that want to emit trailers must set r->expect_trailers = 1
in header filter, otherwise they might not be emitted for HTTP/1.1
responses that aren't already chunked.
This change also adds $sent_trailer_* variables.
Signed-off-by: Piotr Sikora <piotrsikora@google.com>
Diffstat (limited to 'src/http/ngx_http_request.c')
-rw-r--r-- | src/http/ngx_http_request.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c index cc3722fb3..de1b20270 100644 --- a/src/http/ngx_http_request.c +++ b/src/http/ngx_http_request.c @@ -562,6 +562,14 @@ ngx_http_create_request(ngx_connection_t *c) return NULL; } + if (ngx_list_init(&r->headers_out.trailers, r->pool, 4, + sizeof(ngx_table_elt_t)) + != NGX_OK) + { + ngx_destroy_pool(r->pool); + return NULL; + } + r->ctx = ngx_pcalloc(r->pool, sizeof(void *) * ngx_http_max_module); if (r->ctx == NULL) { ngx_destroy_pool(r->pool); |