From d40a94b97d318ea943d466abf6c123a71bcbf87a Mon Sep 17 00:00:00 2001 From: simon Date: Thu, 15 Mar 2001 13:25:48 +0000 Subject: [PATCH] David Brinegar's workaround for an error reporting problem in some WinSocks. git-svn-id: svn://svn.tartarus.org/sgt/putty@1004 cda61777-01e9-0310-a592-d414129be87e --- winnet.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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 || -- 2.11.0