)]}'
{
  "commit": "6d56b46706f0a6ca7e17108c806fc5d4a5a66323",
  "tree": "a8694cf8333a3fc498e397deae2d3c8fd8f8f9de",
  "parents": [
    "4bc7827e5bc7e55996832dfbac251486c28b6d1a"
  ],
  "author": {
    "name": "Roman Arutyunyan",
    "email": "arut@nginx.com",
    "time": "Sat Jul 02 15:59:53 2016 +0300"
  },
  "committer": {
    "name": "Roman Arutyunyan",
    "email": "arut@nginx.com",
    "time": "Sat Jul 02 15:59:53 2016 +0300"
  },
  "message": "Sub filter: eliminate unnecessary buffering.\n\nPreviously, when a buffer was processed by the sub filter, its final bytes\ncould be buffered by the filter even if they don\u0027t match any pattern.\nThis happened because the Boyer-Moore algorithm, employed by the sub filter\nsince b9447fc457b4 (1.9.4), matches the last characters of patterns prior to\nchecking other characters.  If the last character is out of scope, initial\nbytes of a potential match are buffered until the last character is available.\n\nNow, after receiving a flush or recycled buffer, the filter performs\nadditional checks to reduce the number of buffered bytes.  The potential match\nis checked against the initial parts of all patterns.  Non-matching bytes are\nnot buffered.  This improves processing of a chunked response from upstream\nby sending the entire chunks without buffering unless a partial match is found\nat the end of a chunk.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "62f8591bae25d9b76d908997d76cb1c98659d763",
      "old_mode": 33188,
      "old_path": "src/http/modules/ngx_http_sub_filter_module.c",
      "new_id": "e8d1d801d64bc1a341acf0cb24a0183fc2beb81a",
      "new_mode": 33188,
      "new_path": "src/http/modules/ngx_http_sub_filter_module.c"
    }
  ]
}
