From 2a6d9983113de055617151b690630a80adb33978 Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Mon, 26 Dec 2022 16:22:20 -0800
Subject: [PATCH] Add more debug log output around the select() for recv call

... in hopes of debugging issue #468

Also clean up drop files unless -d option is passed.

Incremented version to 0.3.
---
 src/vdmodem/vdmodem.c | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/vdmodem/vdmodem.c b/src/vdmodem/vdmodem.c
index 7a93dbf0f3..03858285ca 100644
--- a/src/vdmodem/vdmodem.c
+++ b/src/vdmodem/vdmodem.c
@@ -41,7 +41,7 @@
 #include "git_hash.h"
 
 #define TITLE "Synchronet Virtual DOS Modem for Windows"
-#define VERSION "0.2"
+#define VERSION "0.3"
 
 bool external_socket;
 union xp_sockaddr addr;
@@ -1387,8 +1387,14 @@ int main(int argc, char** argv)
 			fd_set fds = {0};
 			FD_SET(sock, &fds);
 			struct timeval tv = { 0, 0 };
-			if(now - lastrx >= rx_delay && select(/* ignored: */0, &fds, NULL, NULL, &tv) == 1) {
-				dprintf("select returned 1 at %llu", now);
+			result = select(/* ignored: */0, &fds, NULL, NULL, &tv);
+			if(result != 0) {
+				if(result == SOCKET_ERROR)
+					dprintf("select returned SOCKET_ERROR (%d) at %llu", WSAGetLastError(), now);
+				else
+					dprintf("select returned %d at %llu", result, now);
+			}
+			if(now - lastrx >= rx_delay &&  result == 1) {
 				int rd = recv(sock, buf, rx_buflen, /* flags: */0);
 				dprintf("recv returned %d", rd);
 				if(rd <= 0) {
@@ -1556,6 +1562,12 @@ int main(int argc, char** argv)
 		printf("lastrx: %llu\n", lastrx);
 		printf("lastring: %llu\n", lastring);
 		printf("timer: %llu\n", xp_timer64());
+	} else {
+		if(cfg.client_file[0])
+			remove(cfg.client_file);
+		remove("DOSXTRN.ENV");
+		remove("DOSXTRN.RET");
+		remove("DOSXTRN.ERR");
 	}
 	return retval;
 }
-- 
GitLab