summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpatthoyts <patthoyts@users.sourceforge.net>2008-10-23 23:34:32 (GMT)
committerpatthoyts <patthoyts@users.sourceforge.net>2008-10-23 23:34:32 (GMT)
commit8def31ff208a95aca8062c71d4dd6a020b417dbe (patch)
tree2153a000764332d440ba836abb476ace92eb9166
parent6822a2263c4b65a93826d4a3c8bca50da930e38d (diff)
downloadtcl-8def31ff208a95aca8062c71d4dd6a020b417dbe.zip
tcl-8def31ff208a95aca8062c71d4dd6a020b417dbe.tar.gz
tcl-8def31ff208a95aca8062c71d4dd6a020b417dbe.tar.bz2
Backported a fix for reading HTTP-like protocols that used to work and
were broken with http 2.7. Now http 2.7.2
-rw-r--r--ChangeLog5
-rw-r--r--library/http/http.tcl17
-rw-r--r--library/http/pkgIndex.tcl2
-rw-r--r--unix/Makefile.in6
-rw-r--r--win/Makefile.in6
5 files changed, 22 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 4a2698c..14e41f9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-10-24 Pat Thoyts <patthoyts@users.sourceforge.net>
+
+ * library/http/http.tcl: Backported a fix for reading HTTP-like protocols
+ that used to work and were broken with http 2.7. Now http 2.7.2
+
2008-10-23 Don Porter <dgp@users.sourceforge.net>
* generic/tcl.h: Bump version number to 8.5.6b1 to distinguish
diff --git a/library/http/http.tcl b/library/http/http.tcl
index 32c5309..06829cd 100644
--- a/library/http/http.tcl
+++ b/library/http/http.tcl
@@ -8,12 +8,12 @@
# See the file "license.terms" for information on usage and redistribution of
# this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: http.tcl,v 1.67.2.4 2008/08/11 21:57:14 dgp Exp $
+# RCS: @(#) $Id: http.tcl,v 1.67.2.5 2008/10/23 23:34:32 patthoyts Exp $
package require Tcl 8.4
# Keep this in sync with pkgIndex.tcl and with the install directories
# in Makefiles
-package provide http 2.7.1
+package provide http 2.7.2
namespace eval http {
# Allow resourcing to not clobber existing data
@@ -319,7 +319,7 @@ proc http::geturl { url args } {
-queryprogress {}
-protocol 1.1
binary 0
- state header
+ state connecting
meta {}
coding {}
currentsize 0
@@ -942,7 +942,12 @@ proc http::Event {sock token} {
CloseSocket $sock
return
}
- if {$state(state) eq "header"} {
+ if {$state(state) eq "connecting"} {
+ set state(state) "header"
+ if {[catch {gets $sock state(http)} n]} {
+ return [Finish $token $n]
+ }
+ } elseif {$state(state) eq "header"} {
if {[catch {gets $sock line} n]} {
return [Finish $token $n]
} elseif {$n == 0} {
@@ -985,7 +990,7 @@ proc http::Event {sock token} {
fconfigure $state(-channel) -translation binary
}
}
- if {[info exists state(-channel)] &&
+ if {[info exists state(-channel)] &&
![info exists state(-handler)]} {
# Initiate a sequence of background fcopies
fileevent $sock readable {}
@@ -1019,8 +1024,6 @@ proc http::Event {sock token} {
}
}
lappend state(meta) $key [string trim $value]
- } elseif {[string match HTTP* $line]} {
- set state(http) $line
}
}
} else {
diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl
index 932017a..6badcea 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.1 [list tclPkgSetup $dir http 2.7.1 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}]
+package ifneeded http 2.7.2 [list tclPkgSetup $dir http 2.7.2 {{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 45a2fad..901b4d7 100644
--- a/unix/Makefile.in
+++ b/unix/Makefile.in
@@ -4,7 +4,7 @@
# "./configure", which is a configuration script generated by the "autoconf"
# program (constructs like "@foo@" will get replaced in the actual Makefile.
#
-# RCS: @(#) $Id: Makefile.in,v 1.229.2.8 2008/08/13 23:07:16 das Exp $
+# RCS: @(#) $Id: Makefile.in,v 1.229.2.9 2008/10/23 23:34:32 patthoyts Exp $
VERSION = @TCL_VERSION@
MAJOR_VERSION = @TCL_MAJOR_VERSION@
@@ -782,8 +782,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs
do \
$(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/http1.0; \
done;
- @echo "Installing package http 2.7.1 as a Tcl Module";
- @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/http-2.7.1.tm;
+ @echo "Installing package http 2.7.2 as a Tcl Module";
+ @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/http-2.7.2.tm;
@echo "Installing library opt0.4 directory";
@for i in $(TOP_DIR)/library/opt/*.tcl ; \
do \
diff --git a/win/Makefile.in b/win/Makefile.in
index 4316677..8870d80 100644
--- a/win/Makefile.in
+++ b/win/Makefile.in
@@ -4,7 +4,7 @@
# "./configure", which is a configuration script generated by the "autoconf"
# program (constructs like "@foo@" will get replaced in the actual Makefile.
#
-# RCS: @(#) $Id: Makefile.in,v 1.124.2.4 2008/08/11 21:57:17 dgp Exp $
+# RCS: @(#) $Id: Makefile.in,v 1.124.2.5 2008/10/23 23:34:32 patthoyts Exp $
VERSION = @TCL_VERSION@
@@ -635,8 +635,8 @@ install-libraries: libraries install-tzdata install-msgs
do \
$(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/http1.0"; \
done;
- @echo "Installing package http 2.7.1 as a Tcl Module";
- @$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/http-2.7.1.tm;
+ @echo "Installing package http 2.7.2 as a Tcl Module";
+ @$(COPY) $(ROOT_DIR)/library/http/http.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/http-2.7.2.tm;
@echo "Installing library opt0.4 directory";
@for j in $(ROOT_DIR)/library/opt/*.tcl; \
do \