• Teodor Sigaev's avatar
    Fix infinite sleep and failes of send in Win32. · 47df6e7e
    Teodor Sigaev authored
    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
    47df6e7e
socket.c 12.4 KB