]> granicus.if.org Git - curl/commitdiff
tftpd.c: Fixed sread timeout on Windows by setting it manually
authorMarc Hoersken <info@marc-hoersken.de>
Sat, 6 Apr 2013 12:39:56 +0000 (14:39 +0200)
committerMarc Hoersken <info@marc-hoersken.de>
Sat, 6 Apr 2013 12:39:56 +0000 (14:39 +0200)
tests/server/tftpd.c

index 48950c5499784efcb43351c312d2a1e14bcce253..012e209e818a8e036157967d58c095f9bfd633cd 100644 (file)
@@ -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