From: Simon Tatham Date: Thu, 15 Mar 2001 13:25:48 +0000 (+0000) Subject: David Brinegar's workaround for an error reporting problem in some X-Git-Tag: r8855-g4f798d~2706 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=2f66dec6c901fc4902f69cc7d06866308002f6c0;p=PuTTY_svn.git David Brinegar's workaround for an error reporting problem in some WinSocks. git-svn-id: http://svn.tartarus.org/sgt/putty@1004 cda61777-01e9-0310-a592-d414129be87e --- diff --git a/winnet.c b/winnet.c index 01b4f1ba..131f00a7 100644 --- a/winnet.c +++ b/winnet.c @@ -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 ||