The quasi-fork child was waiting for an explicit signal from the parent before terminating. This synchronization step is unnecessary, and it makes the child hang if the parent terminates for any reason while the fork operation is in progress. In that scenario, and consistently with the Posix version, the child now completes the fork operation and terminates freely when done. This fixes #228
Also introducing some utility functions for translating Windows error codes to errno error codes. This part was adapted from existing code in libuv: https://github.com/libuv/libuv/blob/v1.x/src/win/error.c
It looks like 62cc0e3#diff-07ce465381b20e496c6fb51bedd3491fR3105 inadvertently made the Windows side not abort when an OOM occurs.
During diskless replication the master forks a child, which on posix simply inherits the socket file descriptors for the connections to the slaves. A unix pipe is also used for the child to report the results back to the master. The bulk of the porting work is in making sure that the socket file descriptors and pipe file descriptor are propagated correctly from the master to its child.
…2.8.17 Conflicts: bin/release/redis-2.8.17.zip
Commit 08e4226 broke redis-benchmark. Made time function initialization automatic on first execution. Added explicit initialization of time functions in redis-benchmark, to avoid additional cost on first benchmark execution.
The old list did not made much sense... and the flag is currently not used at all, so no side effects.