diff --git a/src/vdmodem/vdmodem.c b/src/vdmodem/vdmodem.c index 7a93dbf0f3ba8267e801e08fb17f6d3a57e41b6f..03858285ca05a6ed733bba35d5e607c1f4051d7d 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; }