)]}'
{
  "commit": "87c8a643e1dd290780a20a11c5c98b043da387f6",
  "tree": "577fe75b66e2c077c16c0012009de7bb687c110d",
  "parents": [
    "6204eba91ed9d1d5b99879592bfdbef0f3d0660b"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@chromium.org",
    "time": "Sat Feb 21 01:54:29 2015 -0500"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Mon Feb 23 19:59:06 2015 +0000"
  },
  "message": "Use TCP sockets rather than socketpairs in the SSL tests.\n\nThis involves more synchronization with child exits as the kernel no longer\ncloses the pre-created pipes for free, but it works on Windows. As long as\nTCP_NODELAY is set, the performance seems comparable. Though it does involve\ndealing with graceful socket shutdown. I couldn\u0027t get that to work on Windows\nwithout draining the socket; not even SO_LINGER worked. Current (untested)\ntheory is that Windows refuses to gracefully shutdown a socket if the peer\nsends data after we\u0027ve stopped reading.\n\ncmd.ExtraFiles doesn\u0027t work on Windows; it doesn\u0027t use fds natively, so you\ncan\u0027t pass fds 4 and 5. (stdin/stdout/stderr are special slots in\nCreateProcess.) We can instead use the syscall module directly and mark handles\nas inheritable (and then pass the numerical values out-of-band), but that\nrequires synchronizing all of our shim.Start() calls and assuming no other\nthread is spawning a process.\n\nPROC_THREAD_ATTRIBUTE_HANDLE_LIST fixes threading problems, but requires\nwrapping more syscalls.  exec.Cmd also doesn\u0027t let us launch the process\nourselves. Plus it still requires every handle in the list be marked\ninheritable, so it doesn\u0027t help if some other thread is launching a process\nwith bInheritHandles TRUE but NOT using PROC_THREAD_ATTRIBUTE_HANDLE_LIST.\n(Like Go, though we can take syscall.ForkLock there.)\n\nhttp://blogs.msdn.com/b/oldnewthing/archive/2011/12/16/10248328.aspx\n\nThe more natively Windows option seems to be named pipes, but that too requires\nwrapping more system calls. (To be fair, that isn\u0027t too painful.) They also\ninvolve a listening server, so we\u0027d still have to synchronize with shim.Wait()\na la net.TCPListener.\n\nThen there\u0027s DuplicateHandle, but then we need an out-of-band signal.\n\nAll in all, one cross-platform implementation with a TCP sockets seems\nsimplest.\n\nChange-Id: I38233e309a0fa6814baf61e806732138902347c0\nReviewed-on: https://boringssl-review.googlesource.com/3563\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4b2ba0570c51bfb1bba285e7093b0873d2b4adff",
      "old_mode": 33188,
      "old_path": "BUILDING",
      "new_id": "8b7d36d3e887d0ccebd33833bce59d5f7e61f55a",
      "new_mode": 33188,
      "new_path": "BUILDING"
    },
    {
      "type": "modify",
      "old_id": "3f3884ce3eaa1f97e8808804a63b0908f3e462ca",
      "old_mode": 33188,
      "old_path": "crypto/bio/socket.c",
      "new_id": "75412cf2df03feb6b51e3f3ce9b5972f4426a9de",
      "new_mode": 33188,
      "new_path": "crypto/bio/socket.c"
    },
    {
      "type": "modify",
      "old_id": "24ce1f991ceca50206f4bb1141fe902d4a42087d",
      "old_mode": 33188,
      "old_path": "ssl/test/bssl_shim.cc",
      "new_id": "28846ca53400876c266c02d66dd4eebd175198c1",
      "new_mode": 33188,
      "new_path": "ssl/test/bssl_shim.cc"
    },
    {
      "type": "modify",
      "old_id": "8f4f3de83c799cd9c7b9a4a5d0b3ea4b1b55d9bb",
      "old_mode": 33188,
      "old_path": "ssl/test/packeted_bio.cc",
      "new_id": "77cd17c93d34ed05ab819ffe6fe874d5ed0a3304",
      "new_mode": 33188,
      "new_path": "ssl/test/packeted_bio.cc"
    },
    {
      "type": "modify",
      "old_id": "8e9a94800f9ea33d57132e21f1916cead7349830",
      "old_mode": 33188,
      "old_path": "ssl/test/runner/runner.go",
      "new_id": "1c8444075da10598d67aa1e87715926bb9f7f10b",
      "new_mode": 33188,
      "new_path": "ssl/test/runner/runner.go"
    },
    {
      "type": "modify",
      "old_id": "78dcb012a38de89a58b0e2ce5c4b707cc290db0e",
      "old_mode": 33188,
      "old_path": "ssl/test/test_config.cc",
      "new_id": "afcb10670c31b126587d5b69c5c5de6b40245904",
      "new_mode": 33188,
      "new_path": "ssl/test/test_config.cc"
    },
    {
      "type": "modify",
      "old_id": "3bd65e66ca40f9aa1281a9b88efa75ef5de10f16",
      "old_mode": 33188,
      "old_path": "ssl/test/test_config.h",
      "new_id": "61b25c04b373545c9ae25285261be016cdeecdd9",
      "new_mode": 33188,
      "new_path": "ssl/test/test_config.h"
    }
  ]
}
