From 43f85d1f3a9ab4c7f97c2ea6dcbdab537bd3d4c2 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Mon, 4 Nov 2013 05:21:58 -0800 Subject: [PATCH] SCP/TMXR: Fix to socket writes to return 0 bytes written as an expected condition when the output socket is full (EAGAIN or EWOULDBLOCK). --- sim_sock.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/sim_sock.c b/sim_sock.c index 81ac5da8..02be1bb2 100644 --- a/sim_sock.c +++ b/sim_sock.c @@ -1033,7 +1033,18 @@ return rbytes; int32 sim_write_sock (SOCKET sock, char *msg, int32 nbytes) { -return send (sock, msg, nbytes, 0); +int32 err, sbytes = send (sock, msg, nbytes, 0); + +if (sbytes == SOCKET_ERROR) { + err = WSAGetLastError (); + if (err == WSAEWOULDBLOCK) /* no data */ + return 0; +#if defined(EAGAIN) + if (err == EAGAIN) /* no data */ + return 0; +#endif + } +return sbytes; } void sim_close_sock (SOCKET sock, t_bool master)