)]}'
{
  "commit": "877c8815f19fc04585a7028fa6288a73c61b00f8",
  "tree": "e718afe8714aeab2f4a56e023b0d028878a8de96",
  "parents": [
    "7c24a39892acbebd8a86473e9a539d9c5437c18c"
  ],
  "author": {
    "name": "Justin Li",
    "email": "jli.justinli@gmail.com",
    "time": "Tue Mar 08 22:31:55 2016 -0500"
  },
  "committer": {
    "name": "Justin Li",
    "email": "jli.justinli@gmail.com",
    "time": "Tue Mar 08 22:31:55 2016 -0500"
  },
  "message": "Upstream: avoid closing client connection in edge case.\n\nIf proxy_cache is enabled, and proxy_no_cache tests true, it was previously\npossible for the client connection to be closed after a 304. The fix is to\nrecheck r-\u003eheader_only after the final cacheability is determined, and end the\nrequest if no longer cacheable.\n\nExample configuration:\n\nproxy_cache foo;\nproxy_cache_bypass 1;\nproxy_no_cache 1;\n\nIf a client sends If-None-Match, and the upstream server returns 200 with a\nmatching ETag, no body should be returned to the client. At the start of\nngx_http_upstream_send_response proxy_no_cache is not yet tested, thus cacheable\nis still 1 and downstream_error is set.\n\nHowever, by the time the downstream_error check is done in process_request,\nproxy_no_cache has been tested and cacheable is set to 0. The client connection\nis then closed, regardless of keepalive.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "08fa95a9388478a350923feeee2982f046aff107",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_upstream.c",
      "new_id": "3d01523a5bb768fc9ff679520bf186169c9004aa",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_upstream.c"
    }
  ]
}
