comparison src/http/ngx_http_request.c @ 7034:1b068a4e82d8

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>
author Piotr Sikora <piotrsikora@google.com>
date Fri, 24 Mar 2017 03:37:34 -0700
parents 5e05118678af
children 9c29644f6d03
comparison
equal deleted inserted replaced
7033:ab5117642647 7034:1b068a4e82d8
560 { 560 {
561 ngx_destroy_pool(r->pool); 561 ngx_destroy_pool(r->pool);
562 return NULL; 562 return NULL;
563 } 563 }
564 564
565 if (ngx_list_init(&r->headers_out.trailers, r->pool, 4,
566 sizeof(ngx_table_elt_t))
567 != NGX_OK)
568 {
569 ngx_destroy_pool(r->pool);
570 return NULL;
571 }
572
565 r->ctx = ngx_pcalloc(r->pool, sizeof(void *) * ngx_http_max_module); 573 r->ctx = ngx_pcalloc(r->pool, sizeof(void *) * ngx_http_max_module);
566 if (r->ctx == NULL) { 574 if (r->ctx == NULL) {
567 ngx_destroy_pool(r->pool); 575 ngx_destroy_pool(r->pool);
568 return NULL; 576 return NULL;
569 } 577 }