)]}'
{
  "commit": "70c3e6bd816b695d2109f6540a72c06c05a72fea",
  "tree": "0b51366151e93085b2067ea75d9f3a63d1ddb4e7",
  "parents": [
    "c0efce016d5fcfccfb5460b472839b90d26ef1fd"
  ],
  "author": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Fri Aug 20 03:53:56 2021 +0300"
  },
  "committer": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Fri Aug 20 03:53:56 2021 +0300"
  },
  "message": "Upstream: fixed timeouts with gRPC, SSL and select (ticket #2229).\n\nWith SSL it is possible that an established connection is ready for\nreading after the handshake.  Further, events might be already disabled\nin case of level-triggered event methods.  If this happens and\nngx_http_upstream_send_request() blocks waiting for some data from\nthe upstream, such as flow control in case of gRPC, the connection\nwill time out due to no read events on the upstream connection.\n\nFix is to explicitly check the c-\u003eread-\u003eready flag if sending request\nblocks and post a read event if it is set.\n\nNote that while it is possible to modify ngx_ssl_handshake() to keep\nread events active, this won\u0027t completely resolve the issue, since\nthere can be data already received during the SSL handshake\n(see 573bd30e46b4).\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "61fad5ca314ab2406536ef144464ba14e5c40cb7",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_upstream.c",
      "new_id": "01c7877e6ab27d063a7604b86b8892a07b821101",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_upstream.c"
    }
  ]
}
