|
|
|
@ -1878,14 +1878,15 @@ evpipe_write (EV_P_ EV_ATOMIC_T *flag)
|
|
|
|
|
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 @@ pipecb (EV_P_ ev_io *iow, int revents)
|
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|