)]}'
{
  "commit": "f5c0a47f446d89b53375a4bb3175b86f4cdc8691",
  "tree": "d5fd987f0e20955e4c256936deaaafa69778f1b2",
  "parents": [
    "b78a9c983604256500dac57b4f4ca29e32294832"
  ],
  "author": {
    "name": "Ruslan Ermilov",
    "email": "ru@nginx.com",
    "time": "Thu Apr 23 15:10:24 2020 +0300"
  },
  "committer": {
    "name": "Ruslan Ermilov",
    "email": "ru@nginx.com",
    "time": "Thu Apr 23 15:10:24 2020 +0300"
  },
  "message": "gRPC: RST_STREAM(NO_ERROR) handling (ticket #1792).\n\nAs per https://tools.ietf.org/html/rfc7540#section-8.1,\n\n: A server can send a complete response prior to the client\n: sending an entire request if the response does not depend on\n: any portion of the request that has not been sent and\n: received.  When this is true, a server MAY request that the\n: client abort transmission of a request without error by\n: sending a RST_STREAM with an error code of NO_ERROR after\n: sending a complete response (i.e., a frame with the\n: END_STREAM flag).  Clients MUST NOT discard responses as a\n: result of receiving such a RST_STREAM, though clients can\n: always discard responses at their discretion for other\n: reasons.\n\nPreviously, RST_STREAM(NO_ERROR) received from upstream after\na frame with the END_STREAM flag was incorrectly treated as an\nerror.  Now, a single RST_STREAM(NO_ERROR) is properly handled.\n\nThis fixes problems observed with modern grpc-c [1], as well\nas with the Go gRPC module.\n\n[1] https://github.com/grpc/grpc/pull/1661\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d4af66dbf2cd15a712781a1990fa0867e7e33f12",
      "old_mode": 33188,
      "old_path": "src/http/modules/ngx_http_grpc_module.c",
      "new_id": "9e62d8e2a7b450abd0648d2e932edc58f63c4ff2",
      "new_mode": 33188,
      "new_path": "src/http/modules/ngx_http_grpc_module.c"
    }
  ]
}
