From 1f4f47ccf50b4d6518c3dbfd9fd09c7bbb785929 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 30 Sep 2020 14:49:15 +0000 Subject: (slightly) better error-message for invalid http -headers option. This works for plain 8.6 too --- library/http/http.tcl | 8 +++----- tests/http.test | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/library/http/http.tcl b/library/http/http.tcl index abef596..b0f87de 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -733,7 +733,7 @@ proc http::geturl {url args} { -strict boolean -timeout integer -validate boolean - -headers list + -headers dict } set state(charset) $defaultCharset set options { @@ -747,10 +747,8 @@ proc http::geturl {url args} { foreach {flag value} $args { if {[regexp -- $pat $flag]} { # Validate numbers - if { - ([info exists type($flag)] && - ![string is $type($flag) -strict $value]) || - $flag eq "-headers" && [llength $value] %2 != 0 + if {($flag eq "-headers") ? [catch {dict size $value}] : + ([info exists type($flag)] && ![string is $type($flag) -strict $value]) } { unset $token return -code error \ diff --git a/tests/http.test b/tests/http.test index 15bc37f..97e6cfa 100644 --- a/tests/http.test +++ b/tests/http.test @@ -450,7 +450,7 @@ test http-3.33 {http::geturl application/xml is text} -body { } -result {test 4660 /test} test http-3.34 {http::geturl -headers not a dict} -returnCodes error -body { http::geturl http://test/t -headers NoDict -} -result {Bad value for -headers (NoDict), must be list} +} -result {Bad value for -headers (NoDict), must be dict} test http-4.1 {http::Event} -body { set token [http::geturl $url -keepalive 0] -- cgit v0.12