)]}'
{
  "commit": "95fcaa4f4b737df12f88e08e2311367d513e0d0b",
  "tree": "383c9c4df2d96526c40035fb3f5525cff2590235",
  "parents": [
    "dd1c246f7f6c3d1c40a99e554df70e116e4dec6a"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@chromium.org",
    "time": "Tue Aug 05 13:10:14 2014 -0400"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Tue Aug 05 18:07:13 2014 +0000"
  },
  "message": "Fix server-side ClientHello state machine.\n\n- DTLS server code didn\u0027t account for the new ClientHello state. This looks\n  like it only matters if a DTLS server uses select_certificate_cb and returns\n  asynchronously.\n\n- State A transitions immediately to B and is redundant. No code distinguishes\n  A and B.\n\n- The ssl_get_message call transitions to the second state (originally C). This\n  makes the explicit transition to C a no-op. More of a problem,\n  ssl_get_message may return asynchronously and remain in its second state if the\n  handshake body had not completed yet. Fix this by splitting state C in two.\n  Combined with the above change, this results in only the top few states getting\n  reshuffled.\n\nThis fixes the server async tests.\n\nChange-Id: I46703bcd205988b118217b6424ba4f88e731be5a\nReviewed-on: https://boringssl-review.googlesource.com/1412\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4e4d92a48d9f6f8af7d6d1c47e886cc81006d918",
      "old_mode": 33188,
      "old_path": "ssl/d1_srvr.c",
      "new_id": "df691ab53d4994909069690393ec427ea6625e1b",
      "new_mode": 33188,
      "new_path": "ssl/d1_srvr.c"
    },
    {
      "type": "modify",
      "old_id": "bc197333bc553136fe0dd0991432ffe362dcfb5b",
      "old_mode": 33188,
      "old_path": "ssl/s3_srvr.c",
      "new_id": "97b04f81246a4c28e0d3e1a3a40e61d4a01b0b66",
      "new_mode": 33188,
      "new_path": "ssl/s3_srvr.c"
    }
  ]
}
