)]}'
{
  "commit": "31166041c1400198cbc9bc043d4f93a213979347",
  "tree": "bcc514603b9358ae66aa4060174242d9ccefe208",
  "parents": [
    "cf7b9a61485df99f526718cf84559a0bbadaaf11"
  ],
  "author": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Mon May 13 22:44:49 2019 +0300"
  },
  "committer": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Mon May 13 22:44:49 2019 +0300"
  },
  "message": "Range filter: fixed duplicate last buffers.\n\nIn ngx_http_range_singlepart_body() special buffers where passed\nunmodified, including ones after the end of the range.  As such,\nif the last buffer of a response was sent separately as a special\nbuffer, two buffers with b-\u003elast_buf set were present in the response.\n\nIn particular, this might result in a duplicate final chunk when using\nchunked transfer encoding (normally range filter and chunked transfer\nencoding are not used together, but this may happen if there are trailers\nin the response).  This also likely to cause problems in HTTP/2.\n\nFix is to skip all special buffers after we\u0027ve sent the last part of\nthe range requested.  These special buffers are not meaningful anyway,\nsince we set b-\u003elast_buf in the buffer with the last part of the range,\nand everything is expected to be flushed due to it.\n\nAdditionally, ngx_http_next_body_filter() is now called even\nif no buffers are to be passed to it.  This ensures that various\nwrite events are properly propagated through the filter chain.  In\nparticular, this fixes test failures observed with the above change\nand aio enabled.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8dd07205a1053740ce85a34da349634d3a929e3c",
      "old_mode": 33188,
      "old_path": "src/http/modules/ngx_http_range_filter_module.c",
      "new_id": "ae08ebbc50c61272f29058eaf7ffb51074a8f0a4",
      "new_mode": 33188,
      "new_path": "src/http/modules/ngx_http_range_filter_module.c"
    }
  ]
}
