Subject: Fix http-3.29 for machines without IPv6 support.

From: max <[email-masked]>
Date: Thu, 9 Aug 2012 14:26:04 +0000

---
 ChangeLog       |  4 ++++
 tests/http.test | 16 ++++++++++++----
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 95a67b9..3d6e6d7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2012-08-09  Reinhard Max  <[email-masked]>
+
+	* tests/http.test: Fix http-3.29 for machines without IPv6 support.
+
 2010-08-08  Stuart Cassoff  <[email-masked]>
 
 	* unix/tclUnixCompat.c: Change one '#ifdef' to '#if defined()' for
diff --git a/tests/http.test b/tests/http.test
index fe44b47..bde5795 100644
--- a/tests/http.test
+++ b/tests/http.test
@@ -392,11 +392,19 @@ Content-Type {text/plain;charset=utf-8}
 Accept-Encoding .*
 Content-Length 5}
 test http-3.29 "http::geturl $ipv6url" -body {
-    set token [http::geturl $ipv6url -validate 1]
-    http::code $token
+    # We only want to see if the URL gets parsed correctly. This is
+    # the case if http::geturl succeeds or returns a socket related
+    # error. If the parsing is wrong, we'll get a parse error.
+    # It'd be better to separate the URL parser from http::geturl, so
+    # that it can be tested without also trying to make a connection.
+    set error [catch {http::geturl $ipv6url -validate 1} token]
+    if {$error && [string match "couldn't open socket: *" $token]} {
+            set error 0
+    }
+    set error
 } -cleanup {
-    http::cleanup $token
-} -result "HTTP/1.0 200 OK"
+    catch { http::cleanup $token }
+} -result 0
 
 test http-4.1 {http::Event} -body {
     set token [http::geturl $url -keepalive 0]
-- 
cgit v0.12