diff options
author | dgp <dgp@users.sourceforge.net> | 2012-11-06 16:28:05 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2012-11-06 16:28:05 (GMT) |
commit | d8462ed0c6fff27176f1c8909aabdb410d11ec70 (patch) | |
tree | 7beccf8625b1ad0acb64a608b69a898547c04a33 | |
parent | 62aca3895f16c465b05b0c93ae919635ccc2471d (diff) | |
parent | 07bc7f6239dbbfb01001aacdfaece126250e1965 (diff) | |
download | tcl-d8462ed0c6fff27176f1c8909aabdb410d11ec70.zip tcl-d8462ed0c6fff27176f1c8909aabdb410d11ec70.tar.gz tcl-d8462ed0c6fff27176f1c8909aabdb410d11ec70.tar.bz2 |
merge 8.5
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | changes | 3 | ||||
-rw-r--r-- | library/http/http.tcl | 16 | ||||
-rw-r--r-- | library/http/pkgIndex.tcl | 2 | ||||
-rw-r--r-- | unix/Makefile.in | 4 | ||||
-rw-r--r-- | win/Makefile.in | 4 |
6 files changed, 24 insertions, 14 deletions
@@ -1,3 +1,12 @@ +2012-11-06 Donal K. Fellows <dkf@users.sf.net> + + * library/http/http.tcl (http::Finish): [Bug 3581754]: Ensure that + callbacks are done at most once to prevent problems with timeouts on a + keep-alive connection (combined with reentrant http package use) + causing excessive stack growth. Not a fix for the underlying problem, + but ensures that pain will be mostly kept away from users. + Bump http package to 2.7.10. + 2012-10-23 Jan Nijtmans <nijtmans@users.sf.net> * generic/tclInt.h: Remove unused TclpLoadFile function. @@ -7678,4 +7678,7 @@ Many revisions to better support a Cygwin environment (nijtmans) 2012-10-14 (bug fix) [tcl::Bgerror] crash on non-dict options (nijtmans) +2012-11-06 (bug fix)[3581754] avoid multiple callback on keep-alive (fellows) +=> http 2.7.10 + --- Released 8.5.13, November 12, 2012 --- See ChangeLog for details --- diff --git a/library/http/http.tcl b/library/http/http.tcl index ce9f634..fa0425d 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -11,7 +11,7 @@ package require Tcl 8.4 # Keep this in sync with pkgIndex.tcl and with the install directories in # Makefiles -package provide http 2.7.9 +package provide http 2.7.10 namespace eval http { # Allow resourcing to not clobber existing data @@ -199,15 +199,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 815ac12..0b5cdeb 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -1,4 +1,4 @@ # Tcl package index file, version 1.1 if {![package vsatisfies [package provide Tcl] 8.4]} {return} -package ifneeded http 2.7.9 [list tclPkgSetup $dir http 2.7.9 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] +package ifneeded http 2.7.10 [list tclPkgSetup $dir http 2.7.10 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] diff --git a/unix/Makefile.in b/unix/Makefile.in index a2d89aa..87deb20 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -766,8 +766,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs do \ $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/http1.0; \ done; - @echo "Installing package http 2.7.9 as a Tcl Module"; - @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/http-2.7.9.tm; + @echo "Installing package http 2.7.10 as a Tcl Module"; + @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/http-2.7.10.tm; @echo "Installing package opt0.4 files to $(SCRIPT_INSTALL_DIR)/opt0.4/"; @for i in $(TOP_DIR)/library/opt/*.tcl ; \ do \ diff --git a/win/Makefile.in b/win/Makefile.in index b0bdec8..bfc7c57 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -637,8 +637,8 @@ install-libraries: libraries install-tzdata install-msgs do \ $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http1.0"; \ done; - @echo "Installing package http 2.7.9 as a Tcl Module"; - @$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/http-2.7.9.tm; + @echo "Installing package http 2.7.10 as a Tcl Module"; + @$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/http-2.7.10.tm; @echo "Installing library opt0.4 directory"; @for j in $(ROOT_DIR)/library/opt/*.tcl; \ do \ |