recv_ni() and friends don't ask about errno the Windows way?
We have a report from a Windows relay operator about many failures in drain_fd(): https://lists.torproject.org/pipermail/tor-relays/2015-August/007557.html
A) Looking through src/common/compat_threads.c I see that sock_drain() (which is what drain_fd uses if we decided socketpair was the best way to make a pipe) calls recv_ni() which flat-out just looks at errno, with none of the usual Windows wrapping to get at the errno. Is this a bug?
B) Can we please have some more comments in compat_threads.c? What is sock_drain for? Why does replyqueue_process() appear to read and then discard everything the worker has to say?