diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2012-11-06 13:16:03 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2012-11-06 13:16:03 (GMT) |
commit | b2e0789f6bd7402bf3c869073e438b7a07efe49b (patch) | |
tree | 9c3b7ffbcef22d4409db7712de5a3bafc487eae0 /library/http | |
parent | 2bd81c67851aa6fe8e0a8cc3c498fc6643e5064b (diff) | |
parent | 9b474d56b9437cb5d0aea6429d21a68d3119aab9 (diff) | |
download | tcl-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.tcl | 16 | ||||
-rw-r--r-- | library/http/pkgIndex.tcl | 2 |
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}}}] |