)]}'
{
  "commit": "21297a836272a53f6144ddf2ac247ad01fd64d61",
  "tree": "3e9ab99d2a56465105f03775de56edaf28e2448e",
  "parents": [
    "917e489b04a5ae3dc4466ee46833a4132a571c59"
  ],
  "author": {
    "name": "Valentin Bartenev",
    "email": "vbart@nginx.com",
    "time": "Fri May 20 18:41:17 2016 +0300"
  },
  "committer": {
    "name": "Valentin Bartenev",
    "email": "vbart@nginx.com",
    "time": "Fri May 20 18:41:17 2016 +0300"
  },
  "message": "HTTP/2: the \"421 Misdirected Request\" response (closes #848).\n\nSince 4fbef397c753 nginx rejects with the 400 error any attempts of\nrequesting different host over the same connection, if the relevant\nvirtual server requires verification of a client certificate.\n\nWhile requesting hosts other than negotiated isn\u0027t something legal\nin HTTP/1.x, the HTTP/2 specification explicitly permits such requests\nfor connection reuse and has introduced a special response code 421.\n\nAccording to RFC 7540 Section 9.1.2 this code can be sent by a server\nthat is not configured to produce responses for the combination of\nscheme and authority that are included in the request URI.  And the\nclient may retry the request over a different connection.\n\nNow this code is used for requests that aren\u0027t authorized in current\nconnection.  After receiving the 421 response a client will be able\nto open a new connection, provide the required certificate and retry\nthe request.\n\nUnfortunately, not all clients currently are able to handle it well.\nNotably Chrome just shows an error, while at least the latest version\nof Firefox retries the request over a new connection.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "507dc939c785657256c7090258639dd62e8db000",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_header_filter_module.c",
      "new_id": "2cf1205f9002ede318a5982b0592701752cba5a6",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_header_filter_module.c"
    },
    {
      "type": "modify",
      "old_id": "8665e5bd5a6a7866bdc003c7a6e50394534c52f5",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_request.c",
      "new_id": "31e3539d3e40de51e70c2ac4c2f86e516af46725",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_request.c"
    },
    {
      "type": "modify",
      "old_id": "fcd50de4519d1f27486ea91aa0bb0745a45bc017",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_request.h",
      "new_id": "499c1eff59b23b5cef836e80f66890fe34dcabaf",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_request.h"
    },
    {
      "type": "modify",
      "old_id": "2771e588c6be8972cb9f9ee1cba24f6e5864d2f9",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_special_response.c",
      "new_id": "64e5acd5569976925bb55f8bfedc41d59a97e8e2",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_special_response.c"
    }
  ]
}
