X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/e99937c8cf1689b4c92266441b42d6867eed85d5..8d5de7770cde9b808c276bd86a0214189a8f7578:/raw.c diff --git a/raw.c b/raw.c index cf4eaee1..dd0f64a1 100644 --- a/raw.c +++ b/raw.c @@ -149,8 +149,11 @@ static int raw_msg (WPARAM wParam, LPARAM lParam) { * the queue; so it's possible that we can get here even with s * invalid. If so, we return 1 and don't worry about it. */ - if (s == INVALID_SOCKET) + if (s == INVALID_SOCKET) { + closesocket(s); + s = INVALID_SOCKET; return 1; + } if (WSAGETSELECTERROR(lParam) != 0) return -WSAGETSELECTERROR(lParam); @@ -161,8 +164,11 @@ static int raw_msg (WPARAM wParam, LPARAM lParam) { ret = recv(s, buf, sizeof(buf), 0); if (ret < 0 && WSAGetLastError() == WSAEWOULDBLOCK) return 1; - if (ret < 0) /* any _other_ error */ + if (ret < 0) { /* any _other_ error */ + closesocket(s); + s = INVALID_SOCKET; return -10000-WSAGetLastError(); + } if (ret == 0) { s = INVALID_SOCKET; return 0;