*** ./src/backend/port/win32/socket.c.orig Mon Oct 9 10:39:53 2006 --- ./src/backend/port/win32/socket.c Mon Oct 9 15:44:24 2006 *************** *** 132,137 **** --- 132,159 ---- current_socket = s; + /* + * See comments about FD_WRITE and WSASelectEvent + * in pgwin32_select() + */ + if ( (what & FD_WRITE) != 0 ) { + char c; + WSABUF buf; + DWORD sent; + + buf.buf = &c; + buf.len = 0; + r = WSASend(s, &buf, 1, &sent, 0, NULL, NULL); + + if (r == 0) /* Completed - means things are fine! */ + return 1; + else if ( WSAGetLastError() != WSAEWOULDBLOCK ) + { + TranslateSocketError(); + return 0; + } + } + if (WSAEventSelect(s, waitevent, what) == SOCKET_ERROR) { TranslateSocketError();