summaryrefslogtreecommitdiffstats
path: root/library/http
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2012-11-06 13:16:03 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2012-11-06 13:16:03 (GMT)
commitb2e0789f6bd7402bf3c869073e438b7a07efe49b (patch)
tree9c3b7ffbcef22d4409db7712de5a3bafc487eae0 /library/http
parent2bd81c67851aa6fe8e0a8cc3c498fc6643e5064b (diff)
parent9b474d56b9437cb5d0aea6429d21a68d3119aab9 (diff)
downloadtcl-b2e0789f6bd7402bf3c869073e438b7a07efe49b.zip
tcl-b2e0789f6bd7402bf3c869073e438b7a07efe49b.tar.gz
tcl-b2e0789f6bd7402bf3c869073e438b7a07efe49b.tar.bz2
[Bug 3581754]: Ensure that http -command callbacks are done at most once.
Diffstat (limited to 'library/http')
-rw-r--r--library/http/http.tcl16
-rw-r--r--library/http/pkgIndex.tcl2
2 files changed, 8 insertions, 10 deletions
diff --git a/library/http/http.tcl b/library/http/http.tcl
index 2653c3e..d57e3ce 100644
--- a/library/http/http.tcl
+++ b/library/http/http.tcl
@@ -11,7 +11,7 @@
package require Tcl 8.6
# Keep this in sync with pkgIndex.tcl and with the install directories in
# Makefiles
-package provide http 2.8.4
+package provide http 2.8.5
namespace eval http {
# Allow resourcing to not clobber existing data
@@ -205,15 +205,13 @@ proc http::Finish {token {errormsg ""} {skipCB 0}} {
if {[info exists state(after)]} {
after cancel $state(after)
}
- if {[info exists state(-command)] && !$skipCB} {
- if {[catch {eval $state(-command) {$token}} err]} {
- if {$errormsg eq ""} {
- set state(error) [list $err $errorInfo $errorCode]
- set state(status) error
- }
+ if {[info exists state(-command)] && !$skipCB
+ && ![info exists state(done-command-cb)]} {
+ set state(done-command-cb) yes
+ if {[catch {eval $state(-command) {$token}} err] && $errormsg eq ""} {
+ set state(error) [list $err $errorInfo $errorCode]
+ set state(status) error
}
- # Command callback may already have unset our state
- unset -nocomplain state(-command)
}
}
diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl
index d51f8a8..303d3bd 100644
--- a/library/http/pkgIndex.tcl
+++ b/library/http/pkgIndex.tcl
@@ -1,2 +1,2 @@
if {![package vsatisfies [package provide Tcl] 8.6]} {return}
-package ifneeded http 2.8.4 [list tclPkgSetup $dir http 2.8.4 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}]
+package ifneeded http 2.8.5 [list tclPkgSetup $dir http 2.8.5 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}]