)]}'
{
  "commit": "624fbe94a23e183dc356f9c3e696a816cb67acc2",
  "tree": "5591c57365753efcf3c1686a1f531cc5252490fb",
  "parents": [
    "9bc8fc4602fb2b39b6000fed060e185ffcf2571b"
  ],
  "author": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Thu Aug 18 16:52:38 2011 +0000"
  },
  "committer": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Thu Aug 18 16:52:38 2011 +0000"
  },
  "message": "Fixing cpu hog with all upstream servers marked \"down\".\n\nThe following configuration causes nginx to hog cpu due to infinite loop\nin ngx_http_upstream_get_peer():\n\n    upstream backend {\n        server 127.0.0.1:8080 down;\n        server 127.0.0.1:8080 down;\n    }\n\n    server {\n       ...\n       location / {\n           proxy_pass http://backend;\n       }\n    }\n\nMake sure we don\u0027t loop infinitely in ngx_http_upstream_get_peer() but stop\nafter resetting peer weights once.\n\nReturn 0 if we are stuck.  This is guaranteed to work as peer 0 always exists,\nand eventually ngx_http_upstream_get_round_robin_peer() will do the right\nthing falling back to backup servers or returning NGX_BUSY.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "de34b2884c5003d56f685a4a6f6a6b1a6e2d7d2b",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_upstream_round_robin.c",
      "new_id": "c15790aa0e0fbaa659cb65b989788afdb8a2745b",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_upstream_round_robin.c"
    }
  ]
}
