TclHttpd Change Log
(This is an old file (pre 3.0).
The detailed change log is now ChangeLog.)
------------
This file was started after the 2.0.1 release.
Fixed handling of large amounts of post data.
Folded in 1.1 and keep-alive support, thanks to Steve Uhler.
Added support for Tcl/HTML templates (foo.tml) where the result is cached in
a regular HTML file. The templates also support searching up the
URL tree for templates library files (.tml). See the information in the
templates directory.
Increased HTTP timeout from 40 to 120 seconds.
Added /mail/forminfo Direct URL, which uses /usr/lib/sendmail
Updated mime.types:
application/octet-stream sun4 i86pc
application/x-tcl-template tml
application/mac-binhex40 hqx
Removed load of Cisco cat1900.mib from snmp.tcl
Added CGI ident support (Steve Ball).
Fixed env(SCRIPT_NAME)to not include document root.
Fixed env(SERVER_PROTOCOL) to be HTTP/1.0
Change directory to CGI script location before execution.
Cleaned up Cgi_SetEnv so it handles all uses.
The server records referrer information on document not found.
Allow registration of a content type for a direct URL. Define the type
with a global variable that has the same name as the direct URL procedure.
Enhanced the status/doc direct URL to take pattern and sort parameters.
You can sort by number or by name. The string match pattern selects a
subset of documents.
If fixed setuid extension so the type is right and does not cause
a segfault on Linux.
Fixed the torture.tcl script to work with fcopy
Fixed Http stack to handle leading http://servername/ in request URLs.
Added Mail_Url, Status_Url, and Admin_Url to register the url prefix
for these application-direct URLs.
Added Url_RedirectSelf for redirecting within the same server.
Moved redirect stuff to admin.tcl
Fixed "not found" page so it returns 404 and not 200.
--- 2.1 released, running on sunscript.sun.com ---
Removed error logging for normal shutdown of keepalive connections.
Append URL to error log record, if possible.
Added template library directory to support a library of tcl
support scripts in the document tree (separate from server implementation).
Put sunscript.sun.com templates into htdocs/libtml and htdocs/.tml
Added lots to template.tcl module, and moved this from the server's
script library to the htdocs/libtml directory
Fix error handling bug in Url_Dispatch.
Add special case to preserve Url Redirect information in the UrlCache -
this was getting cleared on errors so redirects were getting forgotten.
Changed Tcl Powered logo's file names to match Tk library,
pwrdLogo150.gif etc. The 150 image changed size slightly.
---- released 2.1.1 12/24/97 -----
Added HTTP_COOKIE to the environment set by Cgi_SetEnv.
Changed dates to be GMT.
Fixed (old-fashioned) server side includes to handle spaces in file names.
Fixed error handling in cgi.tcl for two many cgi processes.
Tweaked directory listing display.
Added boolean function to convert strings like "true" to 1
Added Log_Configure and a switch to log names or just ip addresses.
Updated handling of Accept: headers to properly deal with (i.e., discard)
quality of service parameters.
Set up the environment with Cgi_SetEnv before processing templates.
Tweaked template handling such that if a template sets the global
page(dynamic)
variable to 1, then the .tml result is not cached in the parallel .html file.
This gives the flavor of a .subst file but with all the .tml machinery.
Fixed catch of "too many open files"
Fixed typo in authentication logging.
Moved base64.tcl from the auth package to its own base64 package.
Fixed typo in status.tcl for non-unix platforms.
Added /debug/package direct URL to reload a package - useful for
packages used in the .libtml directories.
Renamed lassign to lassign-brent and added a new lassign that
is compatible with the TclX version of lassign. See utils.tcl
---- released 2.1.2 2/26/97 -----
cgi.tcl
Increased CGI timeout from 60 seconds to 300 seconds.
Fixed conflict over "env" variable in Cgi_SetEnvAll that
meant you always were settting the env variable instead of
the passed in variable name.
Fixed broken call to CgiCancel so that hung CGI scripts
do get cleaned up properly.
counter.tcl
Changed Counter_CheckPoint to write its own file
instead of polluting the error log.
direct.tcl
Maintain a map from Tcl prefix to URL prefix so you can
reconstruct pathnames using $Direct($cmdprefix)
Map ?number,number into x=number&y=number so
direct URLs can handle imagemaps.
Added "cache hit" counters to direct URLS so they show
up in the /status/doc display
Added the ability to do redirects by throwing an error
with code 302:
return -code 302 $newurl
doc.tcl
Added Doc_ExcludePat to register pathname suffixes you do
not want found by DocFallback (like .bak and .swp files)
Eliminated fallback when the file name has nothing before
the suffix: like /mumble/.abc
The DocFallback code generates URL redirects to the new path
so that spelling errors like john.osterhoot are not
cached and propagated back to folks browsers.
Doc(errorUrl) is set after an error so that the /error.html
page template can use it.
Template caching traps the case where the cached .html file
cannot be written to disk.
httpd.tcl
Improved pattern on initial command to avoid totally bogus clients.
Added Httpd_SelfUrl that maps /a/b/c into
http://$Httpd(name):$Httpd(port)/a/b/c
only including port if it is != 80
log.tcl
Added support for Log(compressProg) so you can compress
the nightly log file. This is /usr/local/bin/gzip by default.
Eliminated duplicate IP address in the log, which was totally broken: A.B.C.DA.B.C.D, groan
mail.tcl
Improved auto-mail bug reports
Added "href", and "label" args to /mail/forminfo so you
can display a link in the acknowledgement page.
Added Mail_FormInfo that is designed to be embedded into .tml pages.
It assumes there is are sendto and subject form elements that
direct the mailing.
srvui.tcl
Added WM_DELLETE_WINDOW protocol handler
status.tcl
Moved all the Debug routines into debug.tcl
Eliminated the link to /status/notfound/reset from the
/status/notfound page. The URL is still there, just no link.
Fixed missing
from /status/all
url.tcl
Improved URL dispatch so you can have conflicting domain
prefixes like "/tcl" and "/tclhttpd". Previously a domain
prefix like "/tcl" would mask the file "/tclhttpd" in the / domain.
Added even more general support for URL redirections. Any
URL implementation can raise an error and set the global
errorCode variable to
[list HTTPD_REDIRECT $newurl]
this is because subst masks all error codes, so the return -code 302
trick for direct URLS doesn't work inside .tml files.
Added Url_Encode so you can create URLs that have funny characters
properly encoded as %xx
utils.tcl
Beefed up File_List and added an "open" wrapper so we can track
what files are opened. Useful when plugging file descriptor leaks.
mime.types
application/msword doc
application/ms-powerpoint ppt
open.tcl
Created wrapper for open command used by File_List
---- 2.1.3 Released for the Tcl Blast! CD-ROM
auth.tcl
Added REMOTE_USER and AUTH_TYPE environment variable settings
Fixed handling of .htaccess files in the root directory
cgi.tcl
Improvements to work under Windows - including a filter on
what environment variables must be preserved, plus the server
watches the reply so CGI scripts can return MIME headers
and 302 return codes, etc.
Added explicit handling of .tcl, .pl, and .cgi files
httpd.tcl
Added GMT to HttpdDate
utime.c
New file to implement the utime() system call
doc.tcl, url.tcl
Added Steve Ball's parser for multipart/form-data
---- 2.1.4 released, sources put up on netCVS ---
---- see http://www.scriptics.com/software/netcvs.html ----
(This may not be entirely accurate. 2.1.4 had a short life and
some features in 2.1.5 may be earlier in this file.)
cgi.tcl
Refined the windows CGI support. You can define shells to
handle files with different extensions. So you can now handle
Perl CGI scripts :-/
doc.tcl, url.tcl
Refined Steve Ball's parser for multipart/form-data
----------------- released 2.1.5 October 6, 1998 ------------------
Added command line arguments to httpd, including -port. Try
httpd -help
For a complete list of options. Feature contributed by Gerald Lester.
The global variables used by the startup script are now collected into
the Config array.
Added configuration file, the default is tclhttpd.rc. This has most
of the package requires and the various calls to initialization procs.
You can specify alternate config with the -config command line argument.
The startup sequence now adds $Httpd(library)/Binaries/$tcl_platform(os)
and $Httpd(library)/Binaries/$tcl_platform(os)/$tcl_platform(osVersion)
to the auto_path so you have a good place to put those .so files (DLLs).
You can also add to the auto_path with the -library command line argument.
auth.tcl
Fixed to handle (i.e., ignore) extra password fields
dirlist.tcl
Fixed to handle URL tree's added with Doc_AddRoot
Cleaned up the display of they hypertext links.
doc.tcl
Fixes to handle document domains that are not the root domain.
Fixes to DocTemplate to avoid using Doc(templateInterp), which
was already passes as the paramter value.
mail.tcl
Changed Mail/forminfo to Base64_Encode values that get an
explosion of backslashes when using the list command. Instead
of a "Data" command you get a "Data64" command in the mail message.
session.tcl
Added "isSafe" parameter to Session creation.
url.tcl
Tweaked Url_DecodeQuery_application/x-www-urlencoded to ensure there
are evenly matched name-value list pairs even in the face of
mal-formed query data.
----------------- released 2.1.6 December 6, 1998 ------------------
Quick release to fix a number of quirks in the new 2.1.6 startup configuration
----------------- released 2.1.7 December 7, 1998 ------------------
auth.tcl Added Auth_VerifyCallback to make it easier to add
new authorization schemes.
base64.tcl Removed harmless extra ]
cgi.tcl Added env(REQUEST_URI)
debug.tcl Added env argument to /debug/errorInfo form handler
Removed lint found by procheck
direct.tcl Added Cgi_SetEnv call so application direct handlers
have the standard environment.
dirlist.tcl Added sorting by size. (Modified contributed patch.)
doc.tcl Added Doc_Dynamic for use in .tml pages. This sets
page(dynamic) to 1 so the html cache file is not generated.
Added Doc_Cookie and Doc_SetCookie, which a page can
use to query and set a cookie value, respectively.
Added Doc_IsLinkToSelf to see if a given URL corresponds
to the current page.
Fixed template processing to work in "non root"
file systems (things added with Doc_AddRoot)
Removed lint found by procheck
lib/httpd.tcl Fix broken call to Log in Httpd_Shutdown
Moved Httpd(library) definition into this file, away
from bin/httpd.tcl
Added data(uri) element, which is the complete request.
Added Httpd_SetCookie, which you can use to set a cookie
during a subsequent Httpd_ReturnFile, Httpd_ReturnData.
Fixed bug in HTTP/1.1 handling with Expect: header
and the Continue response.
Added some procedure header comments.
log.tcl Made it possible to not log anything if you never call
Log_SetFile. You can still call Log and Log_Flush.
mail.tcl Added env array to /mail/bugreport form handler
snmp.tcl Removed lint
srvui.tcl Fixed WM_DELLETE_WINDOW typo
url.tcl Removed lint.
Added guard against bogus Content-Types for post data
utils.tcl Fixed lassign to work with no input values.
bin/crypt.tcl Added this little expect script that uses the crypt.so
library to encrypt passwords. You still need to
update your htaccess password files by hand.
bin/httpd.tcl Removed Httpd(library) definition, added Config(lib)
instead.
htdocs/guestbook Added simple guestbook example.
.htaccess, .tclaccess Oops, added all these missing files to the distribution.
htdocs/book Added HTML version of book chapter on TclHttpd.
----------------- released 2.2 June 18, 1999 ------------------
cgi/*.cgi Changed to exec "tclsh8.0" instead of absolute path
htdocs/guestbook/guestbook.cgi Fixed link to newguest.html page
cgi.tcl Use [info nameofexecutable] to choose Tcl interpreter
Fixed env(SCRIPT_NAME) to deal with paths that are
either under ~username directories, or directories
added with Doc_AddRoot.
Fixed PATH_TRANSLATED, which was completely wrong.
doc.tcl Changes to Cgi_Domain interface to support the above.
Proper setup of page(url) under ~username directories,
or directories added with Doc_AddRoot.
Hack to support applications created with TclPro Wrapper
so they can find default index files in DocDirectory
url.tcl Cleanup of Url_PathCheck
----------------- released 2.2.1 July 7, 1999 ------------------
bin/httpd.tcl Added load/package require for TclX as an alternate way
to get the setuid function. It looks for either solution now.
bin/imagehttpd.tcl An updated version of minihttpd.tcl that adds
limited keep-alive support.
bin/torture.tcl Made this work on Windows.
admin.tcl Have noisy error message if redirect file is bad when
starting the server.
auth.tcl Guard against missing group definition when parsing
password files
cgi.tcl Fixed initialization of Cgi(tclsh)
Fixed definition of env(PATH_TRANSLATED)
Updated to use the new Httpd_GetPostData interface
direct.tcl Added cookie support. Call Doc_SetCookie from an application
direct URL in order to set a return cookie.
dirlist.tcl Split DirList into three procedures: DirList, which does
a complete page, DirListForm, which adds the listing
order and pattern form elements, and DirListInner, which
displays the file list.
doc.tcl Doc_Cookie now returns a list because there may be more
than one occurence of a named cookie.
Added Doc_Redirect and Doc_RedirectSelf to trigger
a page redirect.
httpd.tcl Added Httpd_GetPostData to read the POST payload data.
Httpd_GetPostChannel returns the socket and tells you
how much POST data is available to read.
url.tcl Disallow all of /, \, and :, from URLs on Windows
to avoid drive-letter attacks.
Added Url_PrefixRemove
Fixed Url_PathCheck to not ignore trailing empty directories.
This was letting you skip the .htaccess file when reading
just the directory contents.
Added Url_PostHook backdoor between Httpd_GetPostData and
Url_DecodeQuery. If you call Url_DecodeQuery and there
is any unread post data, it is automatically read and
bundled in with the data that, for example, could have come
from the query part of the URL. Call Url_DecodeQueryOnly
if you don't want it to look aside at the POST data.
libtml/htmlutils.tcl An assortment of procedures useful from
within .tml page templates. Supercedes the old
libtml/template.tcl file.
----------------- released 2.3.0 October 3, 1999 ------------------
lib/doc.tcl Fixed DocTemplate in two ways. First, templates can both
set cookies with Doc_SetCookie and cause redirects with
Doc_Redirect. Second, it deals correctly with pending
post data so document templates do not have to use
Httpd_GetPostData.
lib/url.tcl Fixed a bug where errors in document handlers would cause
the document handler to be run twice, once from the entry
in the UrlCache array, and one through the URL prefix dispatch.
lib/httpd.tcl Added Httpd_PostDataSize so you can see if there is any
pending post data.
Turned off the socket read handler before calling Url_Dispatch
so document handlers don't have to worry about the socket.
----------------- released 2.3.1 October 5, 1999 ------------------
lib/doc.tcl Fixed cookie bug where Doc_SetCookie could result in a cookie
being given out to different browsers!
Also fixed use of file mtime so it works on Macintosh.
lib/httpd.tcl Fixed reading of mime.types so it uses file join and works on Mac.
Added HttpdCookieLog, which is not used by default.
lib/status.tcl Changes status bar charts to use gifs.
lib/url.tcl Fixed use of the UrlCache array when post data was available.
----------------- released 2.3.2 October 15, 1999 ------------------
lib/httpd.tcl *IMPORTANT* fixed a bug in Httpd_GetPostData where an
eof condition on the socket was not handled properly.
This caused an infinite loop in Url_DecodeQuery.
lib/cgi.tcl Added TZ to the environment variables passed
through to scripts
lib/doc.tcl Fixed DocFallback so it will not select files like
foo.tml.old when asked for foo.html
lib/log.tcl Added an optional debug log. You have to define
Log(debug_file) to "1" to enable this, and then make calls
to Log with "Debug" as the reason.
bin/imagehttpd.tcl Updated this to fix the 1.1 support. This seems
correct for simple cases, but generates some spurious errors
in real life web-sites.
bin/torture.tcl Added some feedback to the Iterate proc
----------------- released 2.3.3 October 25, 1999 ------------------
lib/dirlist.tcl Fixed directory listing to have relative pathnames and to
Url Encode file names (mostly, except for . and _). This fixes
the handing of files with spaces in their names.
lib/httpd.tcl Strip leading http://server.name from incoming URLs, and filter
out any proxy requests to other servers.
lib/log.tcl ** Added cookie to log ** as an extra field. Check your log
analysis programs to make sure this doesn't confuse them.
htdocs/libtml/form.tcl Fixed form::value to entity encode characters like
", > and < inside the quoted strings it returns.
----------------- released 2.3.4 November 28, 1999 ------------------
lib/cgi.tcl Urk - stray debugging puts got into the 2.3.4 release.
----------------- released 2.3.5 November 30, 1999 ------------------
lib/admin.tcl Added the /admin/reset/counter Direct URL. It takes
a "name" argument that is the name of an element of
the counter array to reset.
lib/base64.tcl Fixed a bug that shows up in 8.1 and higher where
trailing NULL bytes are added to the result of
Base64_Decode - each trailing '=' becomes a NULL.
lib/counter.tcl Record the time that counters were reset.
lib/direct.tcl Honor the content-type of query data so the right
arguments are passed to Url_DecodeQuery.
lib/doc.tcl Proctect against regexp specials in file name suffixes
when mapping from non-existing file names to existing
ones, e.g., from "foo.html)" to "foo.html"
lib/status.tcl Display the time that a counter was reset.
----------------- released 2.3.6 January 19, 2000 ------------------
OK, the detailed change log is now in the ChangeLog file.
Please see the WHATSNEW file for information about important
changes in the 3.0 releases.