)]}'
{
  "commit": "464175692f1f00a9e5a87f040d0c59184d63b53b",
  "tree": "0770c84cf8e5eae29b9d5cf9fd5c168179ea4590",
  "parents": [
    "72106aaab439eddc69df29aa328fb5eeb2086f84"
  ],
  "author": {
    "name": "Matt Caswell",
    "email": "matt@openssl.org",
    "time": "Tue May 17 12:28:14 2016 +0100"
  },
  "committer": {
    "name": "Matt Caswell",
    "email": "matt@openssl.org",
    "time": "Fri May 20 14:11:11 2016 +0100"
  },
  "message": "Simplify SSL BIO buffering logic\n\nThe write BIO for handshake messages is bufferred so that we only write\nout to the network when we have a complete flight. There was some\ncomplexity in the buffering logic so that we switched buffering on and\noff at various points through out the handshake. The only real reason to\ndo this was historically it complicated the state machine when you wanted\nto flush because you had to traverse through the \"flush\" state (in order\nto cope with NBIO). Where we knew up front that there was only going to\nbe one message in the flight we switched off buffering to avoid that.\n\nIn the new state machine there is no longer a need for a flush state so\nit is simpler just to have buffering on for the whole handshake. This\nalso gives us the added benefit that we can simply call flush after every\nflight even if it only has one message in it. This means that BIO authors\ncan implement their own buffering strategies and not have to be aware of\nthe state of the SSL object (previously they would have to switch off\ntheir own buffering during the handshake because they could not rely on\na flush being received when they really needed to write data out). This\nlast point addresses GitHub Issue #322.\n\nReviewed-by: Andy Polyakov \u003cappro@openssl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9fb6e89b3649d9daa04ca3db9f601e83e09d06a1",
      "old_mode": 33188,
      "old_path": "ssl/ssl_lib.c",
      "new_id": "83ad9ef107ef046f489c2dcb5896a6fb6f2602ef",
      "new_mode": 33188,
      "new_path": "ssl/ssl_lib.c"
    },
    {
      "type": "modify",
      "old_id": "968a2ec6cc90c0257c3af48969b63c7f78f341c2",
      "old_mode": 33188,
      "old_path": "ssl/ssl_locl.h",
      "new_id": "a1f5774673e5a85e249694bee1b98be103dd14a2",
      "new_mode": 33188,
      "new_path": "ssl/ssl_locl.h"
    },
    {
      "type": "modify",
      "old_id": "d0ea55f7bf74a8c90f14aa5baa5e933f9c369dbf",
      "old_mode": 33188,
      "old_path": "ssl/statem/statem.c",
      "new_id": "20353c305bcdfeb66fd99992c5141b2b3840ca7d",
      "new_mode": 33188,
      "new_path": "ssl/statem/statem.c"
    },
    {
      "type": "modify",
      "old_id": "7591bb9d2286f693608483d90268c6e565a2adf5",
      "old_mode": 33188,
      "old_path": "ssl/statem/statem_clnt.c",
      "new_id": "ecbc43b3d09fae4b8957ccb8a6cdd835a06cdfd8",
      "new_mode": 33188,
      "new_path": "ssl/statem/statem_clnt.c"
    },
    {
      "type": "modify",
      "old_id": "f92510ade8b487b95f81c7238ce5b48ae1e6978c",
      "old_mode": 33188,
      "old_path": "test/heartbeat_test.c",
      "new_id": "906736c37e560ac22fb013758d2817ed1ea1e658",
      "new_mode": 33188,
      "new_path": "test/heartbeat_test.c"
    }
  ]
}
