]> granicus.if.org Git - postgresql/commit
Fix infinite sleep and failes of send in Win32.
authorTeodor Sigaev <teodor@sigaev.ru>
Fri, 13 Oct 2006 14:00:41 +0000 (14:00 +0000)
committerTeodor Sigaev <teodor@sigaev.ru>
Fri, 13 Oct 2006 14:00:41 +0000 (14:00 +0000)
commit10a6e431d3d0905e8df5f9db639ca93ede70c28a
treef1c2cb6a5116b5e9e56e855fec084f107fe146ac
parent9a0d9968b2941770b25f5c055f107eb9e1ab5bdc
Fix infinite sleep and failes of send in Win32.

1) pgwin32_waitforsinglesocket(): WaitForMultipleObjectsEx now called with
finite timeout (100ms) in case of FP_WRITE and UDP socket. If timeout occurs
then pgwin32_waitforsinglesocket() tries to write empty packet goes to
WaitForMultipleObjectsEx again.

2) pgwin32_send(): add loop around WSASend and pgwin32_waitforsinglesocket().
The reason is: for overlapped socket, 'ok' result from
pgwin32_waitforsinglesocket() isn't guarantee that socket is still free,
it can become busy again and following WSASend call will fail with
WSAEWOULDBLOCK error.

See http://archives.postgresql.org/pgsql-hackers/2006-10/msg00561.php
src/backend/port/win32/socket.c