diff -cr postgresql-snapshot-030210/src/backend/port/win32/sema.c postgresql-win32-mha/src/backend/port/win32/sema.c *** postgresql-snapshot-030210/src/backend/port/win32/sema.c Mon Aug 4 04:40:02 2003 --- postgresql-win32-mha/src/backend/port/win32/sema.c Thu Feb 12 20:10:08 2004 *************** *** 227,235 **** DWORD ret; if (sops[0].sem_flg & IPC_NOWAIT) ! ret = WaitForSingleObject(cur_handle, 0); else ! ret = WaitForSingleObject(cur_handle, INFINITE); if (ret == WAIT_OBJECT_0) { --- 227,235 ---- DWORD ret; if (sops[0].sem_flg & IPC_NOWAIT) ! ret = WaitForSingleObjectEx(cur_handle, 0, TRUE); else ! ret = WaitForSingleObjectEx(cur_handle, INFINITE, TRUE); if (ret == WAIT_OBJECT_0) { *************** *** 240,245 **** --- 240,248 ---- else if (ret == WAIT_TIMEOUT) /* Couldn't get it */ errno = EAGAIN; + else if (ret == WAIT_IO_COMPLETION) + /* Signal delivered */ + errno = EINTR; else errno = EIDRM; }