1. 22 Aug, 2018 1 commit
  2. 21 Aug, 2018 2 commits
  3. 20 Aug, 2018 1 commit
  4. 19 Aug, 2018 5 commits
  5. 18 Aug, 2018 3 commits
  6. 17 Aug, 2018 2 commits
  7. 16 Aug, 2018 1 commit
  8. 15 Aug, 2018 21 commits
  9. 14 Aug, 2018 1 commit
  10. 13 Aug, 2018 2 commits
  11. 12 Aug, 2018 1 commit
    • Kenton Varda's avatar
      Make sure capnpc plugins on Windows get a proper EOF. · a65bce17
      Kenton Varda authored
      On Windows, we don't have `fork()` and `exec()`, but rather `spawn()`, which does both in one call. This makes FD inheritance hard -- the parent process has to set up its own FD table to be what it wants the child to receive, then call spawn(), then set things back.
      
      `capnp` does all that, but there was a problem: when it created a pipe, it failed to set the FDs as non-inheritable (Windows equivalent of CLOEXEC). Thus the child would implicitly inherit both ends of the pipe without knowing it. Since it would never close the write end, it would never receive EOF on the read end.
      
      The fix turns out to be simple: create the pipe non-inheritable. We are already separately using `dup2()` to create the copy of the descriptor that we actually want inherited.
      
      Fixes #488.
      a65bce17