summaryrefslogtreecommitdiffstats
path: root/library
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)
commite4aa35c15ea49e1ff7f8fad2e62148a79b9ea89f (patch)
tree9c3b7ffbcef22d4409db7712de5a3bafc487eae0 /library
parent142c9ce40717c553a0702e21b13deb5809d171dd (diff)
parent4d3a8115170564c6159e793451ea25fead36adb6 (diff)
downloadtcl-e4aa35c15ea49e1ff7f8fad2e62148a79b9ea89f.zip
tcl-e4aa35c15ea49e1ff7f8fad2e62148a79b9ea89f.tar.gz
tcl-e4aa35c15ea49e1ff7f8fad2e62148a79b9ea89f.tar.bz2
[Bug 3581754]: Ensure that http -command callbacks are done at most once.
Diffstat (limited to 'library')
-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}}}]