)]}'
{
  "commit": "624051d2891ffee29ff5c30aa85c7b02540ae0ec",
  "tree": "901edc07517639dcaa533942b96c30ab9c2f6edb",
  "parents": [
    "995f2770c3138fc3d698e400fd64d4340316bdc2"
  ],
  "author": {
    "name": "Piotr Sikora",
    "email": "piotrsikora@google.com",
    "time": "Mon Oct 17 17:17:46 2016 -0700"
  },
  "committer": {
    "name": "Piotr Sikora",
    "email": "piotrsikora@google.com",
    "time": "Wed Oct 26 23:30:15 2016 +0000"
  },
  "message": "HTTP: add support for \"429 Too Many Requests\" response (RFC6585).\n\nThis change adds reason phrase in status line and pretty response body\nwhen \"429\" status code is used in \"return\", \"limit_conn_status\" and/or\n\"limit_req_status\" directives.\n\nIt also adds \"http_429\" parameter to \"proxy_next_upstream\" for retrying\nrate-limited requests, and to \"proxy_cache_use_stale\" for serving stale\ncached responses after being rate-limited.\n\nChange-Id: I547cf63769e6420d88db320243204ebf065c2d84\nSigned-off-by: Piotr Sikora \u003cpiotrsikora@google.com\u003e\nReviewed-on: https://nginx-review.googlesource.com/2522\nReviewed-by: Gurgen Hrachyan \u003cgugo@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "62502b04f5a4d22e4d28d8863c2f6303d067d757",
      "old_mode": 33188,
      "old_path": "src/http/modules/ngx_http_fastcgi_module.c",
      "new_id": "4320779ce3b2ddb9bc5c93942f426ca3a088940a",
      "new_mode": 33188,
      "new_path": "src/http/modules/ngx_http_fastcgi_module.c"
    },
    {
      "type": "modify",
      "old_id": "4f49a527638a7e0aff739864525fddfe6687969d",
      "old_mode": 33188,
      "old_path": "src/http/modules/ngx_http_proxy_module.c",
      "new_id": "4059d4bfd8fb2e964833d8dcaa5cd956a024f8ba",
      "new_mode": 33188,
      "new_path": "src/http/modules/ngx_http_proxy_module.c"
    },
    {
      "type": "modify",
      "old_id": "36656ec18e520de32a114f302e8d2e6a09724845",
      "old_mode": 33188,
      "old_path": "src/http/modules/ngx_http_scgi_module.c",
      "new_id": "cd6359b8474f71cc4b5ac8c9b332e33f947029cb",
      "new_mode": 33188,
      "new_path": "src/http/modules/ngx_http_scgi_module.c"
    },
    {
      "type": "modify",
      "old_id": "7f916e84035ff4a7a5c523d68a3a20bdf6ccc5cb",
      "old_mode": 33188,
      "old_path": "src/http/modules/ngx_http_uwsgi_module.c",
      "new_id": "0cf3c1dde2902fed9a80d87739e3da3300fda75b",
      "new_mode": 33188,
      "new_path": "src/http/modules/ngx_http_uwsgi_module.c"
    },
    {
      "type": "modify",
      "old_id": "864fa48ab134ebce8d33cceed06b125e177e9625",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_header_filter_module.c",
      "new_id": "0217a9f48f8218e5f7c5645f5c3fd7da0d33fcec",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_header_filter_module.c"
    },
    {
      "type": "modify",
      "old_id": "3a075ba1df8ab58a048b6074539f6919cc2c1e4e",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_request.h",
      "new_id": "75e3ff78806358bba286f4c624a77f308718cd97",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_request.h"
    },
    {
      "type": "modify",
      "old_id": "7692f801f2c84901e0aa64d2f878425c25355d7d",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_special_response.c",
      "new_id": "3cd6fab9969cda3517bca1d9a4fe10d36b8b3236",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_special_response.c"
    },
    {
      "type": "modify",
      "old_id": "d6e447d13744a2d901c9bdb7ab8fa7b2feba9dd9",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_upstream.c",
      "new_id": "f21c78f6fef136bf4240e573be050a6dbfc08625",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_upstream.c"
    },
    {
      "type": "modify",
      "old_id": "49134be90e3507348075c1239b75e253af662d6e",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_upstream.h",
      "new_id": "5d8b4326905bfbf26ca1d06e2d893b304039d979",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_upstream.h"
    }
  ]
}
