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)