|
6 | 6 | * Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group
|
7 | 7 | *
|
8 | 8 | * IDENTIFICATION
|
9 |
| - * $PostgreSQL: pgsql/src/backend/port/win32/socket.c,v 1.5 2004/08/30 02:54:38 momjian Exp $ |
| 9 | + * $PostgreSQL: pgsql/src/backend/port/win32/socket.c,v 1.6 2004/09/07 14:31:42 tgl Exp $ |
10 | 10 | *
|
11 | 11 | *-------------------------------------------------------------------------
|
12 | 12 | */
|
@@ -93,7 +93,7 @@ TranslateSocketError(void)
|
93 | 93 | static int
|
94 | 94 | pgwin32_poll_signals(void)
|
95 | 95 | {
|
96 |
| - if (WaitForSingleObject(pgwin32_signal_event, 0) == WAIT_OBJECT_0) |
| 96 | + if (WaitForSingleObjectEx(pgwin32_signal_event, 0, TRUE) == WAIT_OBJECT_0) |
97 | 97 | {
|
98 | 98 | pgwin32_dispatch_queued_signals();
|
99 | 99 | errno = EINTR;
|
@@ -130,9 +130,9 @@ pgwin32_waitforsinglesocket(SOCKET s, int what)
|
130 | 130 |
|
131 | 131 | events[0] = pgwin32_signal_event;
|
132 | 132 | events[1] = waitevent;
|
133 |
| - r = WaitForMultipleObjects(2, events, FALSE, INFINITE); |
| 133 | + r = WaitForMultipleObjectsEx(2, events, FALSE, INFINITE, TRUE); |
134 | 134 |
|
135 |
| - if (r == WAIT_OBJECT_0) |
| 135 | + if (r == WAIT_OBJECT_0 || r == WAIT_IO_COMPLETION) |
136 | 136 | {
|
137 | 137 | pgwin32_dispatch_queued_signals();
|
138 | 138 | errno = EINTR;
|
@@ -419,8 +419,8 @@ pgwin32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, c
|
419 | 419 | }
|
420 | 420 |
|
421 | 421 | events[numevents] = pgwin32_signal_event;
|
422 |
| - r = WaitForMultipleObjectsEx(numevents + 1, events, FALSE, timeoutval, FALSE); |
423 |
| - if (r != WSA_WAIT_TIMEOUT && r != (WAIT_OBJECT_0 + numevents)) |
| 422 | + r = WaitForMultipleObjectsEx(numevents + 1, events, FALSE, timeoutval, TRUE); |
| 423 | + if (r != WAIT_TIMEOUT && r != WAIT_IO_COMPLETION && r != (WAIT_OBJECT_0 + numevents)) |
424 | 424 | {
|
425 | 425 | /*
|
426 | 426 | * We scan all events, even those not signalled, in case more than
|
|
0 commit comments