)]}'
{
  "commit": "1bcc8d43d2eed997a5e4c3430459adf63c7657d8",
  "tree": "e6aab7e3d18b95394d72b099486542b09068a46f",
  "parents": [
    "70e2f1d4fa02274a7ee85e09f7befa783391681b"
  ],
  "author": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Thu Feb 03 01:44:38 2022 +0300"
  },
  "committer": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Thu Feb 03 01:44:38 2022 +0300"
  },
  "message": "HTTP/2: made it possible to flush response headers (ticket #1743).\n\nResponse headers can be buffered in the SSL buffer.  But stream\u0027s fake\nconnection buffered flag did not reflect this, so any attempts to flush\nthe buffer without sending additional data were stopped by the write filter.\n\nIt does not seem to be possible to reflect this in fc-\u003ebuffered though, as\nwe never known if main connection\u0027s c-\u003ebuffered corresponds to the particular\nstream or not.  As such, fc-\u003ebuffered might prevent request finalization\ndue to sending data on some other stream.\n\nFix is to implement handling of flush buffers when the c-\u003eneed_flush_buf\nflag is set, similarly to the existing last buffer handling.  The same\nflag is now used for UDP sockets in the stream module instead of explicit\nchecking of c-\u003etype.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8cc14755ad46cbc82a1bf5464c043c2baa6c9ee2",
      "old_mode": 33188,
      "old_path": "src/core/ngx_connection.h",
      "new_id": "6d3348d9c26d28cbd535a2bca44395d2e12bdebd",
      "new_mode": 33188,
      "new_path": "src/core/ngx_connection.h"
    },
    {
      "type": "modify",
      "old_id": "adbbde6336e9c021f71791fb016b3c84df273150",
      "old_mode": 33188,
      "old_path": "src/event/ngx_event_connect.c",
      "new_id": "668084a7bb919ece3406e34aea7d8a23734ebce0",
      "new_mode": 33188,
      "new_path": "src/event/ngx_event_connect.c"
    },
    {
      "type": "modify",
      "old_id": "640b37757a7ed611ab0cd3c8ed70a3b9dc5de97b",
      "old_mode": 33188,
      "old_path": "src/event/ngx_event_udp.c",
      "new_id": "1ac82c7f5e2e1a9af104f7e00c6756e700482813",
      "new_mode": 33188,
      "new_path": "src/event/ngx_event_udp.c"
    },
    {
      "type": "modify",
      "old_id": "932f26dd3055c5da5f173aa1e0bcfc40db27895c",
      "old_mode": 33188,
      "old_path": "src/http/ngx_http_write_filter_module.c",
      "new_id": "89ab49e124647674dae05512414828ddc8028c90",
      "new_mode": 33188,
      "new_path": "src/http/ngx_http_write_filter_module.c"
    },
    {
      "type": "modify",
      "old_id": "9ffb155dfd16343d7117236ffd8873838759385c",
      "old_mode": 33188,
      "old_path": "src/http/v2/ngx_http_v2_filter_module.c",
      "new_id": "62b6a047ca7ae8cadd55247114e5a5ccb98c762e",
      "new_mode": 33188,
      "new_path": "src/http/v2/ngx_http_v2_filter_module.c"
    },
    {
      "type": "modify",
      "old_id": "156a61c3d5ac65f658b548e3c02e89eb4c27e4a2",
      "old_mode": 33188,
      "old_path": "src/stream/ngx_stream_write_filter_module.c",
      "new_id": "07dc7b52e394dcd8ba2bce000d77ad2cdd811afc",
      "new_mode": 33188,
      "new_path": "src/stream/ngx_stream_write_filter_module.c"
    }
  ]
}
