David Brinegar's workaround for an error reporting problem in some

WinSocks.

[originally from svn r1004]
This commit is contained in:
Simon Tatham 2001-03-15 13:25:48 +00:00
Родитель 080d59422b
Коммит dfb9893509
1 изменённых файлов: 9 добавлений и 2 удалений

Просмотреть файл

@ -504,8 +504,15 @@ void try_send(Actual_Socket s) {
noise_ultralight(nsent);
if (nsent <= 0) {
err = (nsent < 0 ? WSAGetLastError() : 0);
if (err == WSAEWOULDBLOCK) {
/* Perfectly normal: we've sent all we can for the moment. */
if ((err==0 && nsent < 0) || err == WSAEWOULDBLOCK) {
/*
* Perfectly normal: we've sent all we can for the moment.
*
* (Apparently some WinSocks can return <0 but
* leave no error indication - WSAGetLastError() is
* called but returns zero - so we check that case
* and treat it just like WSAEWOULDBLOCK.)
*/
s->writable = FALSE;
return;
} else if (nsent == 0 ||