test2032: bail out after last transfer
authorDaniel Stenberg <daniel@haxx.se>
Fri, 31 Aug 2012 21:23:40 +0000 (23:23 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 31 Aug 2012 21:23:40 +0000 (23:23 +0200)
The test would hang and get aborted with a "ABORTING TEST, since it
seems that it would have run forever." until I prevented that from
happening.

I also fixed the data file which got broken CRLF line endings when I
sucked down the path from Joe's repo == my fault.

Removed #37 from KNOWN_BUGS as this fix and test case verifies exactly
this.

docs/KNOWN_BUGS
tests/data/test2032
tests/libtest/libntlmconnect.c

index 6e20778..4601d48 100644 (file)
@@ -134,13 +134,6 @@ may have been fixed since this was written!
 38. Kumar Swamy Bhatt's problem in ftp/ssl "LIST" operation:
   http://curl.haxx.se/mail/lib-2007-01/0103.html
 
-37. Having more than one connection to the same host when doing NTLM
-  authentication (with performs multiple "passes" and authenticates a
-  connection rather than a HTTP request), and particularly when using the
-  multi interface, there's a risk that libcurl will re-use a wrong connection
-  when doing the different passes in the NTLM negotiation and thus fail to
-  negotiate (in seemingly mysterious ways).
-
 35. Both SOCKS5 and SOCKS4 proxy connections are done blocking, which is very
   bad when used with the multi interface.
 
index 4e1f230..5a9e4a2 100644 (file)
@@ -118,26 +118,26 @@ chkhostname curlhost
 ^User-Agent:.*
 </strip>
 <protocol>
-GET /20320100 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
-Host: 127.0.0.1:8990
-Accept: */*
-
-GET /20320100 HTTP/1.1
-Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=
-Host: 127.0.0.1:8990
-Accept: */*
-
-GET /20320200 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
-Host: 127.0.0.1:8990
-Accept: */*
-
-GET /20320200 HTTP/1.1
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=
-Host: 127.0.0.1:8990
-Accept: */*
-
+GET /20320100 HTTP/1.1\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
+Host: 127.0.0.1:8990\r
+Accept: */*\r
+\r
+GET /20320100 HTTP/1.1\r
+Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
+Host: 127.0.0.1:8990\r
+Accept: */*\r
+\r
+GET /20320200 HTTP/1.1\r
+Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
+Host: 127.0.0.1:8990\r
+Accept: */*\r
+\r
+GET /20320200 HTTP/1.1\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
+Host: 127.0.0.1:8990\r
+Accept: */*\r
+\r
 </protocol>
 </verify>
 </testcase>
index 8486f3c..0ef8fc0 100644 (file)
@@ -207,6 +207,9 @@ int test(char *url)
 
     /* At this point, timeout is guaranteed to be greater or equal than -1. */
 
+    fprintf(stderr, "%s:%d num_handles %d timeout %ld\n",
+            __FILE__, __LINE__, num_handles, timeout);
+
     if(timeout != -1L) {
       interval.tv_sec = timeout/1000;
       interval.tv_usec = (timeout%1000)*1000;
@@ -214,6 +217,13 @@ int test(char *url)
     else {
       interval.tv_sec = TEST_HANG_TIMEOUT/1000+1;
       interval.tv_usec = 0;
+
+      /* if there's no timeout and we get here on the last handle, we may
+         already have read the last part of the stream so waiting makes no
+         sense */
+      if(num_handles == 3) {
+        break;
+      }
     }
 
     select_test(maxfd+1, &fdread, &fdwrite, &fdexcep, &interval);