Windows httpd V1.4c Release Notes
Release date: 09-Jun-94
This is the Version 1.4c production release of Windows httpd
(formerly NCSA httpd for Windows).
This software was written by
Bob
Denny <rdenny@netcom.com>. Please note: This software is
no longer "freeware". See the Software License Agreement.
Windows NT and Windows 95
Windows httpd does not run under Windows NT or Windows 95. The direct
CPU and stack bashing I did to achieve the fast multithreading under
16-bit Windows is not compatible with NT and 95. I am also the
author of the O'Reilly WebSite server, part of a commercial
web publishing package for Windows NT and Windows 95. For more info
on WebSite see
WebSite Central.
WinSock Bugs
Field tests have revealed weaknesses in some of the Windows Sockets
packages that are in common use. My network I/O routines make use of
features that were put into WinSock to permit concurrent transactions,
and to minimize the impact of communications on the rest of the system.
Also, httpd is a server, and therefore uses connection
functions that are different from those used by client programs.
I have done quite a bit of work in diagnosing WinSock/TCP problems
with several WinSock packages. I have passed my findings along to the
authors/developers of these packages. If you are interested in my
findings, see
Windows HTTPD
and TCP: A Report for more information.
If you experience communication hangs, incomplete document deliveries,
etc., try adding "-n" to the httpd command line. This disables
multi-session support, disables all Windows efficiency
optimizations, and reverts to simple blocking-mode operation. If this
"cures" your problem, you need to gather evidence for submitting a bug
report to your WinSock vendor.
Remove the "-n" and enable the network I/O tracing feature of httpd and look at the
log. I will be glad to assist in interpretation. If it turns out to be a
server bug, I'll fix it. If not, you'll have to live with single-session
support and lower performance (with "-n turned on) until you can get
your WinSock package fixed.
CGI Scripting
There are severe limitations with using COMMAND.COM as the shell
for executing CGI scripts (see the
DOS Scripting docs). In addition,
I have discovered that there is a limit to the number of DOS virtual
machines that can be exec'ed before Windows will crash. This means that
your system has a limited life if you use DOS-based scripts.
If you have Visual Basic, I strongly recommend that
you take advantage of the
Windows CGI interface.
All of the CGI-required
data items, plus fully decoded Mosaic forms fields, are made available
by the interface. Samples, including a CGI test "script" are included
with the package, in the cgi-src directory. The file CGI.BAS contains a
description of the interface, plus all of the code to handle setting
up the CGI environment within Visual Basic. It is also possible to use
other Windows programming environments such as Access or FoxPro, but you'll
need to get familiar with the environment using Visual Basic first.
Support
The author is not in a position
to provide
commercial-grade technical support for this server. I will specifically
not become involved with hardware, Windows memory management,
or network software setup issues.
Direct your questions and
problems to the comp.infosystems.www.providers USENET newsgroup.
I monitor this newsgroup, as do many other people who may be
able to help you with questions and/or problems. Server configuration
and operation has been kept as similar as possible
to the Unix httpd.
Also, please monitor the
New Windows httpd server home page
for news, updates, and contributed packages, scripts, etc.
Features supported:
- HTTP/1.0 protocol, including cache-optimizing support via "If-modified-since"
- HEAD, GET and POST methods
- Supports up to 16 simultaneous connections with fine-grain overlap
- Very fast, can deliver well over 25,000 requests/hour (4KB average,
486DX/66, VLbus Disk/Ethernet, Netmanage 4.0, Windows/Workgroups 3.11)
- Dual-mode CGI interface
- Windows CGI interface with form field decoding
- CGI 1.1 (modified) script interface using DOS Virtual Machine
- Server-generated directory indexes with type-specific icons, conforms
to formatting of current CERN and Unix NCSA servers
- Directory indexes can be annotated with HTML links & readme file
- Automatic extract of <TITLE>...</TITLE> string from
HTML documents for directory index descriptions
- Automatic mapping of MIME types to DOS file extensions
- URL aliasing and redirection permit disjoint document collections
to be mapped to a virtual directory tree as seen by the server
- Includes image mapping support (Windows CGI port), pre-configured
- Global and local document access controls
- Access authentication using the "real" Unix crypt() for passwords
- Password file maintenance utility runs from DOS command line
- WinSock 1.1 compliant, uses recommended asynchronous API
- WinSock "fallback" mode for sub-standard WinSock packages (single-session only)
- Efficient cooperative multitasking, will not bog down your machine,
or make clients wait on other clients' time-consuming transactions
- Common Log Format access log file
- Server can perform logfile "cycles" while running, up to 30 cycles
- Large integrated set of HTML documentation, including
authoring and administration references and primers
- Demo pages (also useful for initial checkout and examples) that
illustrate basic serving, ISINDEX, forms, image maps, password protection
- Extensive built-in tracing facilities to help diagnose problems
Changes since V1.4
- (c) Overhauled the URL to file mapping and unmapping.
Server now supports nested mapping, and mapping to UNC (remote share)
paths.
- (c) Directory indexes are now generated with full URL paths in the file
links, so they are valid if the directory is a target of an imagemap or
CGI script.
- (c) Added empty ALT tags to directory indexes so text browsers
won't see
[image]
.
- (c) HTTP headers are now terminated with CRLF to conform to latest
HTTP draft spec.
- (c) Removed deprecated
MIME-type:
header from HTTP headers
- (c) URL components with ~ in them are now allowed (e.g.
/~xyz/
).
- (c) The sequence
/./
in a URL is now removed.
- (c) The Wizard CGI configuration now allows use of
~i
and ~o
tokens in the ShellExecTemplate.
- (b) Open CGI output file in binary mode so CGI program can return
non-text content.
- (b) Fix automatic "URL-fixup redirection" for bogus but common
directory URLs without a trailing slash.
- (b) Apply CERT-9504 patch (part2) to strsubfirst() just in case.
- (b) Hide SYSTEM and HIDDEN files from automatic directory listings.
- (b) Fix GPF if CGI program returned "Status:" header.
- (b) Supress DNS error message in httpd.log on server startup unless
network I/O tracing is enabled.
- (b) Unconditionally pass authenticated username through CGI interfaces
if present in HTTP request.
- (a) Convert backslashes in URLs to legal URL path separators (/).
- (a)Fix "too busy" response logic to prevent hard close of socket
on simple GET requests. This showed up as a Internal Error -10057
on Netscape.
- (a)Fix WinCGI form decoding HUGE threshold (was 2048, now is 65535)
Changes since V1.3
- Increased the maximum simultaneous connects from 8 to 16 to
accommodate NetScape's overlapping fetches. This increases the
maximum memory that may be needed by httpd substantially, so be
careful.
- New image mapper that supports ellipse shapes. Uses Windows graphics
primitives for hit-testing ellipses, rectangles and polygons.
- Fixed problem that caused a GPF when client cancelled a request
at the same time server finished the request and was closing the socket.
- Fixed problems where cancelling multiple requests in rapid-fire
succession caused a GPF due to resuming an already running thread.
- Added -r command line option. DNS client reverse lookups are not done
by default in this version. -r enables DNS client reverse lookups. Note
that the latest version of my VBStats package does the DNS reverse
lookups at the time the log info is imported into the database.
- Fixed file handle leak that would occur under rare circumstances when
client cancelled transaction.
- Fixed file handle leak when using per-directory access control files
(#haccess.ctl).
- Removed the need to edit WIN.INI to increase the system-wide default
message queue size. The application now sets its own queue size as needed.
(RTFM, Robert!).
- Server now attempts to recover from a failure of the "listener"
socket by closing it and trying to recreate and rebind it. It will try to
do this 10 times. After that, it assumes that the WinSock package is truly
hosed and shuts down the server.
Previously, the server would loop furiously, appearing to go to sleep, and
fill the httpd.log file with accept failed messages.
- Keys are now unescaped during automatic form decoding
for the Windows CGI interface. This fixes the problem of international
chars in forms keys.
- Common Log Format was fixed to format the correct GMT-offset for
positive offset. Was reporting "+-100" for +1 hour offset, for example.
- Supress logging of network read/write errors unless -x0x1 bit is set
on command line. Aborted connections are normal in HTTP.
- Form decoding now unescapes both keywords and values.
- Disabled icon animation due to lack of time to make a set of new
animated icon images.
Return to the
Overview
Robert B. Denny <rdenny@netcom.com>