)]}'
{
  "commit": "b152bd8153ccd54d312f18616b7e2745decb2c62",
  "tree": "122dd12203f4dcf5a6c2438fe13f31af8d8bce82",
  "parents": [
    "e7cc3432f80d83e47a29a9fc20f057e75200b050"
  ],
  "author": {
    "name": "Piotr Sikora",
    "email": "piotrsikora@google.com",
    "time": "Fri Mar 24 03:37:34 2017 -0700"
  },
  "committer": {
    "name": "Piotr Sikora",
    "email": "piotrsikora@google.com",
    "time": "Fri Mar 24 03:37:34 2017 -0700"
  },
  "message": "Added support for trailers in HTTP responses.\n\nExample:\n\n   ngx_table_elt_t  *h;\n\n   h \u003d ngx_list_push(\u0026r-\u003eheaders_out.trailers);\n   if (h \u003d\u003d NULL) {\n       return NGX_ERROR;\n   }\n\n   ngx_str_set(\u0026h-\u003ekey, \"Fun\");\n   ngx_str_set(\u0026h-\u003evalue, \"with trailers\");\n   h-\u003ehash \u003d ngx_hash_key_lc(h-\u003ekey.data, h-\u003ekey.len);\n\nThe code above adds \"Fun: with trailers\" trailer to the response.\n\nModules that want to emit trailers must set r-\u003eexpect_trailers \u003d 1\nin header filter, otherwise they might not be emitted for HTTP/1.1\nresponses that aren\u0027t already chunked.\n\nThis change also adds $sent_trailer_* variables.\n\nSigned-off-by: Piotr Sikora \u003cpiotrsikora@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ac2e3e8f99acd99f2815ae28549b89fedea7685c",
      "old_mode": 33188,
      "old_path": "src/http/modules/ngx_http_chunked_filter_module.c",
      "new_id": "4d6fd3eed0b3ce16c9792f0f542a8bef7c8ef8e9",
      "new_mode": 33188,
      "new_path": "src/http/modules/ngx_http_chunked_filter_module.c"
    },
    {
      "type": "modify",
      "old_id": "b5be1ffeb66f3fa63abff18be966bf681f595820",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_core_module.c",
      "new_id": "02059efd85deab0a8ff3502ee630aad448f16975",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_core_module.c"
    },
    {
      "type": "modify",
      "old_id": "cc3722fb35dc1ea6119172a9806c9153c77d2118",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_request.c",
      "new_id": "de1b20270a8d386cd2ce6de27910f3f6e8d888e9",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_request.c"
    },
    {
      "type": "modify",
      "old_id": "283c58294e53ff6fd5ecefdd1bfb668024f3fa04",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_request.h",
      "new_id": "f7f3e97f41965fd10eae40448d37f3fe27e2735d",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_request.h"
    },
    {
      "type": "modify",
      "old_id": "6138819dd00e50de33cce4cec428dd4c8e5a8e83",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_variables.c",
      "new_id": "cfb538a69b1939b6bc6d4c033efe1bca8058448d",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_variables.c"
    }
  ]
}
