)]}'
{
  "commit": "663e14e10d0f90fdf61f059d268dd4eb7e5be7f8",
  "tree": "e35b2db1442ccb0560adbf94cf8a30ea8b0021f0",
  "parents": [
    "f45e938b89d0ef3967bf95216bd3f63ef5e65429"
  ],
  "author": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Tue Dec 11 13:18:50 2012 +0000"
  },
  "committer": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Tue Dec 11 13:18:50 2012 +0000"
  },
  "message": "Merge of r4921, r4922, r4923, r4924, r4925: request body fixes.\n\n*) Request body: fixed \"501 Not Implemented\" error handling.\n\n   It is not about \"Method\" but a generic message, and is expected to be used\n   e.g. if specified Transfer-Encoding is not supported.  Fixed message to\n   match RFC 2616.\n\n   Additionally, disable keepalive on such errors as we won\u0027t be able to read\n   request body correctly if we don\u0027t understand Transfer-Encoding used.\n\n*) Request body: $request_body variable generalization.\n\n   The $request_body variable was assuming there can\u0027t be more than two\n   buffers.  While this is currently true due to request body reading\n   implementation details, this is not a good thing to depend on and may\n   change in the future.\n\n*) Request body: code duplication reduced, no functional changes.\n\n   The r-\u003erequest_body_in_file_only with empty body case is now handled in\n   ngx_http_write_request_body().\n\n*) Request body: fixed socket leak on errors.\n\n   The r-\u003emain-\u003ecount reference counter was always incremented in\n   ngx_http_read_client_request_body(), while it is only needs to be\n   incremented on positive returns.\n\n*) Request body: properly handle events while discarding body.\n\n   An attempt to call ngx_handle_read_event() before actually reading\n   data from a socket might result in read event being disabled, which is\n   wrong.  Catched by body.t test on Solaris.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1e01c857dc1df2b8fbce3e5c2597c57d03ba9a9c",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_header_filter_module.c",
      "new_id": "e3efbba5bcf2632da0ec5f9e45d2a9182430b607",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_header_filter_module.c"
    },
    {
      "type": "modify",
      "old_id": "bddd7c580a8074e71deed15af610425661038380",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_request_body.c",
      "new_id": "3c69d052c7a028e0e57fcfbe7621daa53f4a54eb",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_request_body.c"
    },
    {
      "type": "modify",
      "old_id": "77b3dd13fcc57271d911ae0878e82faa45e8a7fe",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_special_response.c",
      "new_id": "be495f9096c7fc9c457d15e09cfca85435aeb652",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_special_response.c"
    },
    {
      "type": "modify",
      "old_id": "457476842bd5d925e3b37a5c12be436b9e6a7bb5",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_variables.c",
      "new_id": "298064a8151e6311dacfdd36b1aaf00a609574d2",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_variables.c"
    }
  ]
}
