Index: src/include/miscadmin.h =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/include/miscadmin.h,v retrieving revision 1.167 diff -c -r1.167 miscadmin.h *** src/include/miscadmin.h 29 Aug 2004 05:06:55 -0000 1.167 --- src/include/miscadmin.h 2 Sep 2004 18:17:57 -0000 *************** *** 88,94 **** #define CHECK_FOR_INTERRUPTS() \ do { \ ! if (WaitForSingleObject(pgwin32_signal_event,0) == WAIT_OBJECT_0) \ pgwin32_dispatch_queued_signals(); \ if (InterruptPending) \ ProcessInterrupts(); \ --- 88,94 ---- #define CHECK_FOR_INTERRUPTS() \ do { \ ! if (WaitForSingleObjectEx(pgwin32_signal_event,0,TRUE) == WAIT_OBJECT_0) \ pgwin32_dispatch_queued_signals(); \ if (InterruptPending) \ ProcessInterrupts(); \ Index: src/backend/port/win32/sema.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/port/win32/sema.c,v retrieving revision 1.8 diff -c -r1.8 sema.c *** src/backend/port/win32/sema.c 29 Aug 2004 05:06:46 -0000 1.8 --- src/backend/port/win32/sema.c 2 Sep 2004 18:50:32 -0000 *************** *** 233,239 **** wh[0] = cur_handle; wh[1] = pgwin32_signal_event; ! ret = WaitForMultipleObjects(2, wh, FALSE, (sops[0].sem_flg & IPC_NOWAIT) ? 0 : INFINITE); if (ret == WAIT_OBJECT_0) { --- 233,239 ---- wh[0] = cur_handle; wh[1] = pgwin32_signal_event; ! ret = WaitForMultipleObjectsEx(2, wh, FALSE, (sops[0].sem_flg & IPC_NOWAIT) ? 0 : INFINITE, TRUE); if (ret == WAIT_OBJECT_0) { *************** *** 241,247 **** sem_counts[sops[0].sem_num]--; return 0; } ! else if (ret == WAIT_OBJECT_0 + 1) { /* Signal event is set - we have a signal to deliver */ pgwin32_dispatch_queued_signals(); --- 241,247 ---- sem_counts[sops[0].sem_num]--; return 0; } ! else if (ret == WAIT_OBJECT_0 + 1 || ret == WAIT_IO_COMPLETION) { /* Signal event is set - we have a signal to deliver */ pgwin32_dispatch_queued_signals(); Index: src/backend/port/win32/socket.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/port/win32/socket.c,v retrieving revision 1.5 diff -c -r1.5 socket.c *** src/backend/port/win32/socket.c 30 Aug 2004 02:54:38 -0000 1.5 --- src/backend/port/win32/socket.c 2 Sep 2004 18:50:07 -0000 *************** *** 93,99 **** static int pgwin32_poll_signals(void) { ! if (WaitForSingleObject(pgwin32_signal_event, 0) == WAIT_OBJECT_0) { pgwin32_dispatch_queued_signals(); errno = EINTR; --- 93,99 ---- static int pgwin32_poll_signals(void) { ! if (WaitForSingleObjectEx(pgwin32_signal_event, 0, TRUE) == WAIT_OBJECT_0) { pgwin32_dispatch_queued_signals(); errno = EINTR; *************** *** 130,138 **** events[0] = pgwin32_signal_event; events[1] = waitevent; ! r = WaitForMultipleObjects(2, events, FALSE, INFINITE); ! if (r == WAIT_OBJECT_0) { pgwin32_dispatch_queued_signals(); errno = EINTR; --- 130,138 ---- events[0] = pgwin32_signal_event; events[1] = waitevent; ! r = WaitForMultipleObjectsEx(2, events, FALSE, INFINITE, TRUE); ! if (r == WAIT_OBJECT_0 || r == WAIT_IO_COMPLETION) { pgwin32_dispatch_queued_signals(); errno = EINTR; *************** *** 419,426 **** } events[numevents] = pgwin32_signal_event; ! r = WaitForMultipleObjectsEx(numevents + 1, events, FALSE, timeoutval, FALSE); ! if (r != WSA_WAIT_TIMEOUT && r != (WAIT_OBJECT_0 + numevents)) { /* * We scan all events, even those not signalled, in case more than --- 419,426 ---- } events[numevents] = pgwin32_signal_event; ! r = WaitForMultipleObjectsEx(numevents + 1, events, FALSE, timeoutval, TRUE); ! if (r != WAIT_TIMEOUT && r != WAIT_IO_COMPLETION && r != (WAIT_OBJECT_0 + numevents)) { /* * We scan all events, even those not signalled, in case more than