--- libev/ev.c 2012/05/06 13:42:10 1.426 +++ libev/ev.c 2012/05/06 19:29:59 1.427 @@ -1878,14 +1878,15 @@ else #endif { - /* win32 people keep sending patches that change this write() to send() */ - /* and then run away. but send() is wrong, it wants a socket handle on win32 */ - /* so when you think this write should be a send instead, please find out */ - /* where your send() is from - it's definitely not the microsoft send, and */ - /* tell me. thank you. */ - /* it might be that your problem is that your environment needs EV_USE_WSASOCKET */ - /* check the ev documentation on how to use this flag */ +#ifdef _WIN32 + WSABUF buf; + DWORD sent; + buf.buf = &buf; + buf.len = 1; + WSASend (EV_FD_TO_WIN32_HANDLE (evpipe [1]), &buf, 1, &sent, 0, 0, 0); +#else write (evpipe [1], &(evpipe [1]), 1); +#endif } errno = old_errno; @@ -1910,9 +1911,16 @@ else #endif { - char dummy; - /* see discussion in evpipe_write when you think this read should be recv in win32 */ - read (evpipe [0], &dummy, 1); + char dummy[4]; +#ifdef _WIN32 + WSABUF buf; + DWORD recvd; + buf.buf = dummy; + buf.len = sizeof (dummy); + WSARecv (EV_FD_TO_WIN32_HANDLE (evpipe [0]), &buf, 1, &recvd, 0, 0, 0); +#else + read (evpipe [0], &dummy, sizeof (dummy)); +#endif } }