Apache Week
Issue 2, 16thFebruary1996:

Copyright 2020 Red Hat, Inc

In this issue


UnixWare 2.* users report that SIGHUPs fail to restart Apache. No solution yet.

Socket Errors (socket error: accept failed) are occuring frequently with some O/S; most noticable on Linux. Other servers don't have this problem, and it doesn't always occur under heavy loads.

New Versions

Over 40 patches were submitted for 1.0.2. A fully patched Apache was uploaded to make the patching and testing job easier for the developers.

Current version: 1.0.2, Next version: 1.1b0 (probably). There may also be a stable 1.0.3 release which has only major bug fixes (and no new features)

Apache OS/2 version 1.0.2 is available and will become part of the core distribution if the OS/2 patches submitted get accepted


Apache Patches
Various heated discussion took place about what criteria can be used to Veto a patch. With over 40 patches to consider it becomes tricky enough to work out what is going on with the voting process. CVS might make the whole voting process go away, if enough people use it and use it sensibly.
CVS (Configuration Management tool)
The issue of when CVS will be adopted for configuration management was raised. CVS isn't a miracle cure to the voting and patching process; it is simply a tool that will simplify effort for the developers to keep up to date with the latest alterations to Apache. A stable branch is for the latest "stable" release and only bug fixes go into it (for Apache versions 1.0.3+) A development branch will contain code that will go into Apache 1.1+
Using Netscape with Keep-alives can speed up downloading pages. In quick tests with keep-alives limiting Netscape to 2 connections gave much better performance than using 4 connections.
An article on servers mentioned that Netscape supports CGI 1.2 (what?)
Apache Configuration
Editing the Configuration file is troublesome. Other solutions were discussed including using the GNU autoconf system for the majority of the OS dependant stuff. The module list will still need to be presented to the user as a "yes/no" list or by editing a file.
An example Apache installation system has been written as a Web form. It generates a custom Configuration file and adds it to an archive the user can then download. This could be extended to do custom compilations and write out the server configuration files.
Scripting Languages
PHP is a powerful scripting language built into HTML that supports amongst other things DBM/MSQL databases. The author is debating making PHP a module for the Apache server.
Feature Negotiation
Basing content on the User Agent is a bad thing; some browsers change their User Agent at will. It looks like conditional HTML will be used instead of content negotiation. One single page could then be sent from the server that contains the content for browsers that support a particular feature (such as tables) and ones that do not. This is easy for servers, easier to update by the author, and can be cached without problems. We already see this with the Applet tags for Java and the tags for Netscape Frames.
A patch to negotiate on user agents was uploaded. Since a full proposal for feature negotiation won't be around for another couple of months it is a good compromise.
A company called OpenText based in Canada is selling a suite of software tools containing Apache under the name 'Latitude Web Server' without proper credit according to the Apache licence. Strange then that their own Web sites use the Netscape and NCSA servers.


A new version of mod_auth_msql (0.4) with better logging was submited. Also from the same author was the mod_auth_anon module to allow anonymous users in to a protected area after giving an Email address

The problems with running multiple Virtual hosts using different brands of server has beeen solved with a new patch to allow a "Listen" directive. ("Listen <address>:<port>")

The "Keep-Alive" persistant connection code can now be disabled and you can specify a maximum number of transfers for each connection. KeepAlives won't work with SSIs or CGIs (they don't output Content-length headers and so will terminate a keep-alive session). The CERN server buffers all small outputs from scripts and the like so it can find the length before sending the data to the client. A future possibility is to let a CGI script decide how much buffering the server is to use on it. KeepAlives also cause problems with proxy servers; unfortunately there is no real way of knowing a proxy server (the HTTP/1.1 "Forwarded:" header is rarely used) to turn off KeepAlives with Proxies.