From a181e7b084b67112084d6cbce166a1ac1ffaecd4 Mon Sep 17 00:00:00 2001 From: Marc Hoersken Date: Sat, 6 Apr 2013 14:39:56 +0200 Subject: tftpd.c: Fixed sread timeout on Windows by setting it manually --- tests/server/tftpd.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/server/tftpd.c b/tests/server/tftpd.c index 48950c549..012e209e8 100644 --- a/tests/server/tftpd.c +++ b/tests/server/tftpd.c @@ -1196,6 +1196,9 @@ static void sendtftp(struct testcase *test, struct formats *pf) */ static void recvtftp(struct testcase *test, struct formats *pf) { +#if USE_WINSOCK + DWORD recvtimeout; +#endif ssize_t n, size; recvblock = 0; #if defined(HAVE_ALARM) && defined(SIGALRM) @@ -1265,7 +1268,17 @@ send_ack: alarm(rexmtval); #endif /* normally times out and quits */ +#ifdef USE_WINSOCK + recvtimeout = 10; + setsockopt(peer, SOL_SOCKET, SO_RCVTIMEO, + (const char*)&recvtimeout, sizeof(recvtimeout)); +#endif n = sread(peer, &buf.storage[0], sizeof(buf.storage)); +#ifdef USE_WINSOCK + recvtimeout = 0; + setsockopt(peer, SOL_SOCKET, SO_RCVTIMEO, + (const char*)&recvtimeout, sizeof(recvtimeout)); +#endif #ifdef HAVE_ALARM alarm(0); #endif -- cgit v1.2.3