)]}'
{
  "commit": "50598396c5ba93aaf9af01fa1b7a5f8845f76588",
  "tree": "29fb595896f2de9880de82df52f6396853791e41",
  "parents": [
    "7b60f07f5d538264fcab2e90edcfc02786406a22"
  ],
  "author": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Fri Feb 10 20:24:26 2017 +0300"
  },
  "committer": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Fri Feb 10 20:24:26 2017 +0300"
  },
  "message": "Upstream: read handler cleared on upstream finalization.\n\nWith \"proxy_ignore_client_abort off\" (the default), upstream module changes\nr-\u003eread_event_handler to ngx_http_upstream_rd_check_broken_connection().\nIf the handler is not cleared during upstream finalization, it can be\ntriggered later, causing unexpected effects, if, for example, a request\nwas redirected to a different location using error_page or X-Accel-Redirect.\nIn particular, it makes \"proxy_ignore_client_abort on\" non-working after\na redirection in a configuration like this:\n\n    location \u003d / {\n        error_page 502 \u003d /error;\n        proxy_pass http://127.0.0.1:8082;\n    }\n\n    location /error {\n        proxy_pass http://127.0.0.1:8083;\n        proxy_ignore_client_abort on;\n    }\n\nIt is also known to cause segmentation faults with aio used, see\nhttp://mailman.nginx.org/pipermail/nginx-ru/2015-August/056570.html.\n\nFix is to explicitly set r-\u003eread_event_handler to ngx_http_block_reading()\nduring upstream finalization, similar to how it is done in the request body\nreading code and in the limit_req module.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9cbec1fedc745ef1c7b985ef434fa1a50c45d114",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_upstream.c",
      "new_id": "04bfc72cae7c8fb86fad714f17dae97f59fd60a7",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_upstream.c"
    }
  ]
}
